【问题标题】:Celery worker never ready (hangs) with flask芹菜工人从未准备好(挂起)烧瓶
【发布时间】:2014-03-24 20:02:52
【问题描述】:

我有一个任务模块,我们在其中基本上执行以下操作:

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 应用程序:

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/中的教程

但是,当我运行工作程序时,我看到它正在启动,它列出了我的添加任务然后它挂起(从不显示就绪消息)。

【问题讨论】:

  • 对于我们这些不知道“芹菜”是什么的人来说,这是一个非常不寻常的问题标题:P
  • 使用 DEBUG 日志级别(-l 选项)启动 worker 时的输出是什么?
  • 基本上只看到注册的任务列表,然后worker就挂了。
  • @lazyfunctor 运行调试,这是我看到的最后一件事 [2014-04-01 23:04:21,446: DEBUG/MainProcess] |工人:在它挂起之前启动池......
  • 我真的不知道 celery 是什么,当我在问题列表中看到这个时,我以为你 100% 疯了。现在我知道那个人使库是。

标签: celery


【解决方案1】:

我遇到了相同的症状,并且能够将问题缩小到 Flask-SocketIO。虽然这可能不是导致 OP 问题的直接原因,但它可能与未来具有相同症状的访问者相关或相关。

我在这里记录了我的问题:https://github.com/miguelgrinberg/Flask-SocketIO/issues/61

另外,没有足够的声誉来发表评论。

【讨论】:

    猜你喜欢
    • 2015-12-16
    • 1970-01-01
    • 2011-09-23
    • 2012-08-22
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多