我很难把多线程并发在 celery 中的工作方式放在一起。
看起来要使用的默认类型是-P eventlet
. 我假设-P threads
由于 GIL 而这不起作用,并且在实践中不会有并发性。
但它看起来也像(从这里的例子)我不能简单地指定-P eventlet
并开始触发任务,我必须通过启动并行任务celery.group
。据此,多进程工作者永远不会并行消费消息。
所以,总而言之,看起来任务的真正并行化,我必须使用多处理。我可以使用 eventlet,但我必须修改我的任务的运行方式。我的任务是响应外部触发器随机触发的,所以我事先不知道我需要创建的时间和数量 - 所以看起来我不能在我的用例中使用 eventlet。
这个对吗?