ext_celery.py 669 B

1234567891011121314151617181920212223
  1. from celery import Task, Celery
  2. from flask import Flask
  3. def init_app(app: Flask) -> Celery:
  4. class FlaskTask(Task):
  5. def __call__(self, *args: object, **kwargs: object) -> object:
  6. with app.app_context():
  7. return self.run(*args, **kwargs)
  8. celery_app = Celery(
  9. app.name,
  10. task_cls=FlaskTask,
  11. broker=app.config["CELERY_BROKER_URL"],
  12. backend=app.config["CELERY_BACKEND"],
  13. task_ignore_result=True,
  14. )
  15. celery_app.conf.update(
  16. result_backend=app.config["CELERY_RESULT_BACKEND"],
  17. )
  18. celery_app.set_default()
  19. app.extensions["celery"] = celery_app
  20. return celery_app