【问题标题】:Is it possible to use gevent execution pools with Celery beat?是否可以将 gevent 执行池与 Celery beat 一起使用?
【发布时间】:2020-10-10 08:32:27
【问题描述】:

我有一些任务希望以并行方式运行。它们几乎 100% 受 IO 限制,并且不是 CPU 密集型(只是发出 API 请求)。

我在 Docker 环境中使用 celery/celerybeat,刚刚将 --pool=gevent 添加到我的 docker-compose 文件中,但我还必须传递 --beat

当我启动我的应用程序时,我收到以下错误:

celery.exceptions.ImproperlyConfigured: -B option doesn't work with eventlet/gevent pools: use standalone beat instead.

有没有办法使用 Celery beat 的线程执行?

【问题讨论】:

    标签: python django celery celerybeat


    【解决方案1】:

    无论如何,您正在尝试做的事情(即在工作人员中嵌入节拍)isn't recommended。因此,我建议您使用 gevent 池启动独立的 Celery beat(根据错误消息的建议)和工作人员。工作人员的部分是您在执行 I/O 绑定任务时利用 gevent,而不是启动它们的 Celery beat。

    或者,如果您使用 Celery 4.4 或更高版本,您可以尝试使用 --pool threads 来处理线程任务池。

    【讨论】:

      猜你喜欢
      • 2020-06-01
      • 1970-01-01
      • 2015-04-25
      • 1970-01-01
      • 2013-02-27
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 2020-07-12
      相关资源
      最近更新 更多