芹菜的apply_async是线程还是过程?



有人能告诉我Celery是在线程中还是在单独的子进程中执行任务吗?文档似乎没有对此进行解释(大概读了3遍)。如果它是一个线程,它是如何通过GIL的(特别是通知谁以及如何通知事件)?

你将如何比较芹菜的异步和Twisted的反应器模型?芹菜到底是用反应器模型吗?

谢谢,

有人能告诉我Celery是在线程中还是在单独的子进程?

两者都不是,任务将在单独的进程中执行,可能在不同的机器上执行。它不是您调用"延迟"的线程的子进程。-C和-P选项控制工作进程如何管理自己的线程。工作进程通过消息服务获得任务,该消息服务也是完全独立的。

你将如何比较芹菜的异步和Twisted的反应器模型?是芹菜到底是用反应器模型的?

Twisted是一个事件队列。它是异步的,但不是为并行处理而设计的。

-c和-p是与并发相关的选项,适用于celener worker。

-c并发,--CONCURRENCY=并发处理队列的子进程数。这个默认值是您的系统-P POOL_CLS,--池=POOL_CLS池实现:进程(默认)、eventlet、,gevent、solo或threads。

使用eventlet:http://docs.celeryproject.org/en/latest/userguide/concurrency/eventlet.html#enabling-eventlet

http://docs.celeryproject.org/en/latest/internals/reference/celery.concurrency.processes.html

相关内容

  • 没有找到相关文章

最新更新