我在使用 Celery 运行任务时遇到段错误。在查找问题后,似乎其他人正在通过用--pool=threads
开始芹菜来解决类似的问题。
当我尝试通过--pool=threads
时,我会得到ModuleNotFoundError: No module named 'threads'
我不相信这与thread
模块相同,后者会抛出No module named 'thread'
错误。
如何开始使用线程,它有什么作用?
关于芹菜网站中--pool=threads
的文档非常稀少。搜索"--pool"不会返回任何实质性内容,除了与台球有关的内容
刚刚发布的 Celery 4.4.0 将--pool thread
添加到并发列表中。
您可以在 Celery 4.4 更新日志中阅读更多内容:
线程任务池
我们重新引入了一个线程任务池,使用 concurrent.futures.ThreadPoolExecutor.
以前的线程任务池是实验性的。此外,它基于已过时的线程池包。
您可以通过将worker_pool设置为"线程"或将 –pool 线程传递给 celery worker 命令来使用新的线程任务池。
现在,您可以使用线程而不是进程进行池化。
celery worker -A your_application --pool threads --loginfo=INFO
如果要使用线程作为执行池,可以在 eventlet 和 gevent 之间进行选择。
http://docs.celeryproject.org/en/latest/reference/celery.bin.worker.html#cmdoption-celery-worker-p
您需要pip install
eventlet/gevent 才能使其正常工作。