【问题标题】:Python task queues in production [closed]生产中的Python任务队列[关闭]
【发布时间】:2013-09-20 12:17:51
【问题描述】:

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

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

问候

【问题讨论】:

  • "要求我们推荐或查找工具、库或最喜欢的非现场资源的问题对于 Stack Overflow 来说是题外话,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题和原因到目前为止已经解决了它。”

标签: python celery pyramid zeromq task-queue


【解决方案1】:

我选择了带有 Redis 的 celery(而不是 django),并且目前对它很满意。我遇到的事情:

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

  • Zeromq 看起来像一个了不起的项目,它似乎有很好的性能,但是当我尝试使用它时,它无法传递任何消息,即使使用内置的示例也是如此。问题当然是我的——ipython 也使用 zeromq 并且在同一台机器上完美运行。

  • 对我来说,启动和运行 celery 所需的实际工作量很少。我的用例与 python-rq 似乎解决的用例大致相同,但当我开始时它并不存在,所以我使用了 celery,而且它(除了 RabbitMQ,这对我来说很痛苦),很容易设置和使用。

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

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

  • 我的任务不是持久性的或事务性的。如果任务终止,用户会收到错误消息,然后可以重试。这些任务也是幂等的——如果它们被执行多次,就不会出错。如果你的情况不是这样,你需要更加小心处理任务的方式,rabbitmq 会更有吸引力。

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

  • 我的任务被选择为相当粗粒度 - 9.2 秒及以上。

【讨论】:

  • 我在 zmq 中构建了项目,它们完美地工作。这些示例一开始可能会令人困惑。我还用 Celery 任务构建了项目,它们工作得非常好,直到他们没有。根据任务的数量,它们会占用大量内存。
  • 我很好奇你要运行哪个示例——当我尝试运行示例时,它们并没有让我感到困惑。他们根本没有发送任何消息。我确定这是我做的,但没有文件说明为什么会发生这种情况,也没有任何我可以寻求帮助的地方。
  • 我得到了 Python 示例。事实上,我在其中发现了一个谬误并对其进行了修复并将其发送给 ZMQ 人员,因此它现在应该是一个可行的示例。
  • 我应该详细说明。我让 Python PubSub 工作了
猜你喜欢
  • 2018-12-20
  • 1970-01-01
  • 2018-03-13
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 2022-06-18
  • 2018-12-12
相关资源
最近更新 更多