Celery --pool=threads -- 这是做什么的以及如何正确使用它?

Cas*_*per 5 python multithreading celery

我在使用 Celery 运行任务时遇到了段错误。查找问题后,似乎其他人正在通过启动 celery 来解决类似的问题--pool=threads

当我尝试通过时--pool=threads我得到ModuleNotFoundError: No module named 'threads'

thread我不相信这与会引发错误的模块相同No module named 'thread'

如何开始使用线程以及它有什么作用?

Celery 站点中有关的文档--pool=threads非常稀疏。搜索“--pool”除了与台球相关的内容外不会返回任何实质性内容

mat*_*tox 7

刚刚发布的 Celery 4.4.0 添加--pool thread到了并发列表中。

\n

您可以在Celery 4.4 变更日志中阅读更多内容:

\n
\n

线程任务池

\n
\n
\n

我们使用concurrent.futures.ThreadPoolExecutor 重新引入了线程任务池。

\n
\n
\n

之前的线程任务池是实验性的。此外,它基于已过时的线程池包。

\n
\n
\n

您可以通过将worker_pool设置为\xe2\x80\x98threads`或将\xe2\x80\x93pool线程传递给celery工作命令来使用新的线程任务池。

\n
\n

现在您可以使用线程而不是进程进行池化。

\n
celery worker -A your_application --pool threads --loginfo=INFO\n
Run Code Online (Sandbox Code Playgroud)\n


Bjo*_*iel 1

如果您想使用线程作为执行池,您可以在 eventlet 和 gevent 之间进行选择。

http://docs.celeryproject.org/en/latest/reference/celery.bin.worker.html#cmdoption-celery-worker-p

您需要pip installeventlet/gevent 才能使其工作。

  • 这并不完全正确,因为 Celery 4.4.0 具有“线程”并发类型。 (2认同)