Opened 4 years ago

Closed 4 years ago

#34447 closed New feature (wontfix)

Support backgroup async repeat task. just like fastapi_utils.tasks.repeat_every

Reported by: pythonwood Owned by: nobody
Component: Core (Other) Version: 4.1
Severity: Normal Keywords:
Cc: wuweishun@… Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Feature Need: Async django should make repeat task much more easy.

I like to use fastapi_utils.tasks.repeat_every, so easy and doc is here:
​https://fastapi-utils.davidmontague.xyz/user-guide/repeated-tasks/

from fastapi import FastAPI
from sqlalchemy.orm import Session

from fastapi_utils.session import FastAPISessionMaker
from fastapi_utils.tasks import repeat_every

database_uri = f"sqlite:///./test.db?check_same_thread=False"
sessionmaker = FastAPISessionMaker(database_uri)

app = FastAPI()


def remove_expired_tokens(db: Session) -> None:
    """Pretend this function deletes expired tokens from the database"""


@app.on_event("startup")
@repeat_every(seconds=60 * 60)  # 1 hour
def remove_expired_tokens_task() -> None:
    with sessionmaker.context_session() as db:
        remove_expired_tokens(db=db)

For Django, I found django-celery-beat and django-q and so on, but they are too heavy for depending a sub-system which name broker.

I hope django support this feature when running in async mode. (ASGI Django)

Change History (1)

comment:1 by Mariusz Felisiak, 4 years ago

Resolution: → wontfix
Status: new → closed

Thanks for this ticket, however my initial response is "wontfix" as there are 3rd-party packages that provide this. As far as I'm aware, Django never wanted to provide background tasks.

If you don't agree, please ​follow the triaging guidelines with regards to wontfix tickets and take this to DevelopersMailingList, where you'll reach a wider audience and see what other think.

Note: See TracTickets for help on using tickets.
Back to Top