我有一个任务模块,我们基本上执行以下操作:
def make_celery(app):
celery = Celery(app.import_name, 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
@celery.task(name="tasks.add")
def add(x, y):
return x + y
然后创建芹菜应用程序:
celery = tasks.make_celery(app)
app是一个烧瓶应用程序
对于我正在使用的配置:
CELERY_BROKER_URL = str(os.environ.get("CELERY_BROKER_URL", 'redis://localhost:6379/0'))
CELERY_RESULT_BACKEND = str(os.environ.get("CELERY_RESULT_BACKEND", 'redis://localhost:6379/0'))
我正在关注http://flask.pocoo.org/docs/patterns/celery/
中的教程然而,当我运行worker时,我看到它正在启动,它列出了我的添加任务然后它挂起(从不显示就绪消息)。
答案 0 :(得分:1)
我遇到了相同的症状,并且能够将问题缩小到Flask-SocketIO。虽然这可能不直接导致OP的问题,但它可能与具有相同症状的未来访客相关或相关。
我在这里记录了我的问题:https://github.com/miguelgrinberg/Flask-SocketIO/issues/61
此外,没有足够的声誉发布评论。