#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, 18 months ago

Resolution: wontfix
Status: newclosed

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