Django芹菜任务在单独的服务器上

Tho*_*ohn 6 django rabbitmq celery

我们有两台服务器,服务器A和服务器B.服务器A专用于运行django Web应用程序.由于大量数据,我们决定在服务器B中运行芹菜任务.服务器A和B使用公共数据库.在服务器A,webapp的模型中保存后保存任务.如何在我的django项目中使用rabbitmq实现这个想法

Die*_*nte 8

您有2个服务器,1个项目和2个设置(每个服务器1个).

服务器A(网络服务器+兔子)

服务器B(仅适用于工人的芹菜)

然后在两个设置中设置代理URL.像这样的东西:

BROKER_URL = 'amqp://user:password@IP_SERVER_A:5672//' 在服务器B设置中匹配服务器A到服务器A的IP.

目前,任何任务都必须发送到服务器A中的兔子到虚拟服务器/.

在服务器B中,您必须初始化芹菜工作者,如下所示:

python manage.py celery worker -Q queue_name -l info
Run Code Online (Sandbox Code Playgroud)

就是这样.

Sintesis:Django向Rabbit发送消息以排队任务,然后芹菜工人请求一些消息来执行任务.

注意:不要求RabbitMQ必须安装在服务器A中,您可以在服务器C中安装Rabbit,并BROKER_URL在两个设置(A和B)中引用,如下所示:BROKER_URL='amqp://user:password@IP_SERVER_C:5672//'.

对不起我的英语不好.

问候.

  • 你的英语没有错.清晰明确的信息.谢谢 (3认同)
  • @tech4242 经纪人不需要知道工人的数量。代理只需知道消息放在哪里(在哪个队列中)。如果您需要更多工作人员,服务器 B 的指令将适用于服务器 N。在每个设置中,您设置代理 url,并在启动命令中告诉您要从哪个队列处理消息。 (3认同)
  • 感谢明确的回答,欣赏它. (2认同)
  • 显然,您可以使用相同的命令通过服务器添加许多工作人员。 (2认同)