【问题标题】:Remote Django application sending messages to RabbitMQ远程 Django 应用程序向 RabbitMQ 发送消息
【发布时间】:2014-05-22 03:01:01
【问题描述】:

我开始熟悉 RabbitMQ 术语,所以我会尽力解释。几周后我将进行公开测试,这是我希望实现的设置。我希望 Django 成为制片人;将消息生成到远程 RabbitMQ 盒子和另一个在 RabbitMQ 队列上侦听任务的 Celery 盒子。所以总共会有三个盒子。 Django、RabbitMQ 和芹菜。到目前为止,根据 Celery 文档,我已经成功地能够在另一台机器上同时运行 Django 和 Celery 以及 Rabbit MQ。 Django 只是简单地调用视图中的任务:

add.delay(3, 3)

然后消息被发送到 RabbitMQ。 RabbitMQ 将其​​发送回发送任务的同一台机器(因为 Django 和 celery 共享同一个盒子)并由 celery 处理任务。

这非常适合开发目的。然而,让 Django 和 Celery 在同一个机器上运行并不是一个好主意,因为两者都必须竞争内存和 CPU。这里的整个目标是让客户端进入和退出 HTTP 请求周期,并让 celery 工作人员处理任务。但是,如果机器正在接受 HTTP 请求并同时处理任务,它的速度会大大降低。

所以我想知道有没有办法让这一切相互分离。让 Django 发送任务,RabbitMQ 转发它们,然后 Celery 处理它们(生产者、代理、消费者)。

我该怎么做呢?非常简单的例子会有所帮助!

【问题讨论】:

    标签: django rabbitmq celery django-celery


    【解决方案1】:

    您需要在第三台机器上部署应用程序的代码,并在那里只执行处理任务的命令。您还需要在该机器上拥有代码。

    【讨论】:

    • 这么多复制我的 Django 盒子,只运行实际听正确的命令?我有一种感觉,那就是这样做的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    相关资源
    最近更新 更多