【发布时间】:2016-10-14 13:56:54
【问题描述】:
我正在使用 Flask-SQLAlchemy、Celery 和 uWSGI。
我知道 Flask-SQLAlchemy 会自动为您管理会话。我不确定这如何与 Celery 工作人员一起使用,但似乎当我第二次运行任务时,出现以下错误:DatabaseError: (psycopg2.DatabaseError) 服务器意外关闭了连接。
以下是我创建应用上下文和 celery 任务的方法:
def make_celery(app):
celery = Celery(
app.import_name,
backend=app.config['CELERY_BACKEND'],
broker=app.config['CELERY_BROKER_URL'],
)
celery.conf.update(app.config)
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
似乎工作人员正在使用相同的数据库连接,并且在任务完成后该连接没有得到补充?
可能和following question有关?
我不确定如何正确设置工作人员或 celery,以便他们使用与数据库的新连接..
【问题讨论】:
标签: python postgresql flask celery flask-sqlalchemy