【问题标题】:Python background worker for RabbitMQRabbitMQ 的 Python 后台工作者
【发布时间】:2015-03-02 06:10:57
【问题描述】:

我正在构建一个 Python 3 应用程序,它将使用来自 RabbitMQ 的消息。是否有一些 Python 后台作业库可以使这变得容易?我在 Ruby 中寻找类似于 Sneakers 的东西。我希望图书馆有:

  • 定义处理 RabbitMQ 消息的任务的简单方法(我有一个单独的非 Python 生产者应用程序,它将创建消息并将它们放入 RabbitMQ)
  • 配置运行的工作进程数 任务
  • 将工作进程作为守护进程运行

【问题讨论】:

  • 你检查amqp包了吗?

标签: python python-3.x rabbitmq backgroundworker


【解决方案1】:

我相信你在找Celery

您将按如下方式定义任务

@task
def mytask(param):
    return 1 + 1

它会被放入消息代理中(例如提到的RabbitMQ),然后从celery中消费和执行

您可以配置工作人员的数量

celery worker --concurrency=10

是的,它可以被妖魔化

【讨论】:

  • 我可以将 Celery 配置为在将消息添加到队列时运行任务吗?我有一个单独的非 Python 生产者应用程序,它将创建消息并将它们放入 RabbitMQ
  • 是的,当然,这是默认情况。虽然我从未尝试将非 python 生产者的任务放入队列中。作为另一种情况,您可以定期运行任务(如 cron)、延迟运行等
  • 我已经使用 librabbitmq 从 iOS 应用程序将任务放入队列中。只要您遵循任务格式 (docs.celeryproject.org/en/latest/internals/protocol.html),它就可以工作。
【解决方案2】:

要使用 RabbitMq 的任务,您必须定义 worker,但是要在守护模式下运行 worker,您必须为该 worker 创建一个主管

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 2015-04-05
    • 2011-10-30
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多