是否可以将 gevent 执行池与 Celery beat 一起使用?
Is it possible to use gevent execution pools with Celery beat?
我有一些任务想 运行 以并行方式完成。它们几乎是 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 中使用线程执行?
无论如何,您正在尝试做什么(即在 worker 中嵌入节拍)isn't recommended。所以我建议你开始一个独立的芹菜节拍(如错误消息所建议的那样)和带有 gevent 池的工人。工作人员的部分是您在执行 I/O 绑定任务时利用 gevent 的地方,而不是仅仅启动它们的 Celery beat。
或者,如果您使用 Celery 4.4 或更新版本,您可以尝试使用 --pool threads
线程任务池。
我有一些任务想 运行 以并行方式完成。它们几乎是 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 中使用线程执行?
无论如何,您正在尝试做什么(即在 worker 中嵌入节拍)isn't recommended。所以我建议你开始一个独立的芹菜节拍(如错误消息所建议的那样)和带有 gevent 池的工人。工作人员的部分是您在执行 I/O 绑定任务时利用 gevent 的地方,而不是仅仅启动它们的 Celery beat。
或者,如果您使用 Celery 4.4 或更新版本,您可以尝试使用 --pool threads
线程任务池。