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