我开始熟悉RabbitMQ术语,所以我会尽力解释。我将在几周内进行公开测试,这是我希望实现的设置。我希望Django成为制作人;生成消息到远程RabbitMQ框和另一个Celery框,监听RabbitMQ队列中的任务。所以总共会有三个盒子。 Django,RabbitMQ&芹菜。到目前为止,从Celery文档中,我已经成功地将Django和Celery以及Rabbit MQ运行在另一台机器上。 Django只是在视图中调用该任务:
add.delay(3, 3)
消息被发送到RabbitMQ。 RabbitMQ将它发送回发送任务的同一台机器(因为Django和芹菜共用同一个盒子),芹菜处理任务。
这非常适合开发目的。然而,让Django和Celery在同一个盒子上运行并不是一个好主意,因为两者都必须争夺内存和CPU。这里的整个目标是让客户进出HTTP请求周期并让芹菜工人处理任务。但是如果它接受HTTP请求并处理任务,机器将大大减速。
所以我想知道是否有办法使这一切彼此分开。让Django发送任务,RabbitMQ转发它们,然后Celery处理它们(Producer,Broker,Consumer)。
我该怎么做呢?非常简单的例子会有所帮助!
答案 0 :(得分:0)
您需要的是在第三台计算机上部署应用程序的代码,并仅在那里执行处理任务的命令。您还需要在该计算机上拥有代码。