Opened 20 months ago
Closed 20 months 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)
Note:
See TracTickets
for help on using tickets.
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.