由于我在Python方面的经验,我目前需要选择一种可用于该语言的任务队列解决方案。我正在考虑Celery(我应该提到我不使用Django,切换到该框架不是一种选择),Python-RQ(http://python-rq.org/)和Zeromq与pyzmq。
如果有人可以分享他/她在生产环境中使用这些或其他任务队列的经验,我将很高兴。对,我正在考虑强烈的python-rq。
问候
我选择了带有 Redis 的芹菜(没有 django),目前对它很满意。 我遇到的事情:
-
RabbitMQ工作,直到它不... 它开始无缘无故地暂停,然后最终挂起所有任务。 由于它是重量级的,并且为了可靠性而选择,它被扔到了船外。
-
Zeromq 看起来像一个很棒的项目,它似乎具有出色的性能,但是当我尝试使用它时,它无法传递任何消息,即使使用内置示例也是如此。 错误肯定是我的 - ipython也使用zeromq并在同一台机器上完美运行。
-
对我来说,启动和运行芹菜所需的实际工作量很少。 我的用例与python-rq似乎解决的用例大致相同,但是当我开始时它并不存在,所以我使用了芹菜,它(除了RabbitMQ,这对我来说很痛苦),它很容易设置和使用。
-
将 Redis 配置为不使用任何持久存储使事情更容易预测,而且我从来不需要担心队列状态。
我没有遇到/使用的东西:
-
我的任务不是持久性或事务性的。 如果任务死亡,用户会收到错误消息,可以重试。 这些任务也是幂等的——如果它们被多次执行,就不会出错。 如果这对你的情况来说不是这样,你需要更加小心你如何处理任务,而 rabbitmq 会更有吸引力。
-
我的任务没有冲突,也不需要按给定的顺序执行。
-
我的任务被选为相当粗粒度的 - 9.2秒及以上。