生产中的Python任务队列

时间:2013-09-20 12:17:51

标签: python celery pyramid zeromq task-queue

由于我使用Python的经验,我目前需要选择一种可用于该语言的任务队列解决方案。我正在考虑Celery(我应该提到我不使用Django并且切换到该框架不是一个选项),Python-RQ(http://python-rq.org/)和Zeromq与pyzmq。

如果有人可以与生产环境中的那些或其他任务队列分享他/她的经验,我会很高兴。对了,我没有考虑强烈的python-rq。

此致

1 个答案:

答案 0 :(得分:3)

我选择芹菜和Redis(并没有django),我现在很高兴。我遇到的事情:

  • RabbitMQ一直工作,直到它没有......它无缘无故地开始暂停,然后最终挂起所有任务。由于它是重量级的,并且为了可靠性而被选择,它被抛到了舷外。

  • Zeromq看起来像一个神话般的项目,它似乎有很好的性能,但是当我尝试使用它时,它甚至无法传递任何消息,即使使用内置示例。故障当然是我的 - ipython也使用zeromq并在同一台机器上完美运行。

  • 对于我来说,让芹菜开始运转所需的实际工作很少。我有与python-rq似乎相同的用法,但是当我开始时它并不存在,所以我使用芹菜,它(除了RabbitMQ,这对我来说很痛苦),它很容易设置并使用。

  • 将Redis配置为不使用任何持久存储使事情更容易预测,我从不需要担心队列状态。

我没有碰到/使用的东西:

  • 我的任务不是持久的或事务性的。如果任务终止,用户将收到错误消息,并可以再次尝试。这些任务也是幂等的 - 如果它们被执行多次则没有任何问题。如果你的情况不是这样,你需要更加小心处理任务,而rabbitmq会更有吸引力。

  • 我的任务没有冲突或需要按给定的顺序执行。

  • 我的任务选择相当粗糙 - 9.2秒及以上。