Vat*_*ekh 6 python architecture django celery celery-task
我在同一个VM上部署了一个django(1.10)
+ celery(4.x)
,rabbitmq
作为代理(在同一台机器上).我想在多节点架构上开发相同的应用程序,就像我可以复制许多工作节点,并将任务扩展为快速运行.这里,
您应该在一个节点中安装borker并对其进行配置,以便来自其他节点的工作人员可以访问它.
为此,您可以在rabbitmq上创建新的用户/虚拟主机.
# add new user
sudo rabbitmqctl add_user <user> <password>
# add new virtual host
sudo rabbitmqctl add_vhost <vhost_name>
# set permissions for user on vhost
sudo rabbitmqctl set_permissions -p <vhost_name> <user> ".*" ".*" ".*"
# restart rabbit
sudo rabbitmqctl restart
Run Code Online (Sandbox Code Playgroud)
从其他节点,您可以排队任务,也可以只运行工作人员来执行任务.
from celery import Celery
app = Celery('tasks', backend='amqp',
broker='amqp://<user>:<password>@<ip>/<vhost>')
def add(x, y):
return x + y
Run Code Online (Sandbox Code Playgroud)
如果你有这样的文件(比如说task.py
),你可以使用add.delay()排队任务.
你也可以开始工作
celery worker -A task -l info
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看我的答案,以便了解如何在远程计算机上运行任务.对于一步一步的过程,您可以查看我在缩放芹菜上写的帖子.