Flask 应用上下文和 celery 集成
Flask app context and celery integration
将 celery 与 Flask 应用程序集成时,celery 是否需要了解 Flask 应用程序上下文?
我可以做类似的事情吗:
import celery from Celery
celery = Celery()
@task
def mytask():
或者我必须这样做:
def make_celery(app=None):
app = app or create_app(os.getenv('FLASK_CONFIG') or 'default')
celery = Celery(__name__, broker=app.config.CELERY_BROKER_URL)
celery.conf.update(app.conf)
TaskBase = celery.Task
class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self, *args, **kwargs)
celery.Task = ContextTask
return celery
然后 运行 芹菜 = make_celery(app)?
Celery 任务只需要知道应用程序上下文,如果你正在做需要它的事情(数据库查询等)。否则,您可以按原样使用 Celery。
将 celery 与 Flask 应用程序集成时,celery 是否需要了解 Flask 应用程序上下文?
我可以做类似的事情吗:
import celery from Celery
celery = Celery()
@task
def mytask():
或者我必须这样做:
def make_celery(app=None):
app = app or create_app(os.getenv('FLASK_CONFIG') or 'default')
celery = Celery(__name__, broker=app.config.CELERY_BROKER_URL)
celery.conf.update(app.conf)
TaskBase = celery.Task
class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self, *args, **kwargs)
celery.Task = ContextTask
return celery
然后 运行 芹菜 = make_celery(app)?
Celery 任务只需要知道应用程序上下文,如果你正在做需要它的事情(数据库查询等)。否则,您可以按原样使用 Celery。