如何使用django+celery+RabbitMQ实现异步执行
发布网友
发布时间:2022-04-07 11:30
我来回答
共3个回答
懂视网
时间:2022-04-07 15:51
第一步:下载并安装Erlang
原因:RabbitMQ服务器端代码是使用Erlang语言编写的,它依赖于Erlang运行。
下载地址:http://www.erlang.org/downloads
根据本机系统的位数选择合适的版本。双击下载好的安装包,开始安装。
安装完成后要配置环境变量,在系统环境变量中新建。
变量名:ERLANG_HOME
变量值就是刚才erlang的安装地址,点击确定。
然后双击系统变量path
点击“新建”,将%ERLANG_HOME%in加入到path中。
最后windows键+R键,输入cmd,再输入erl,看到版本号就说明erlang安装成功了。
热心网友
时间:2022-04-07 12:59
1)
安装
需要安装RabbitMQ、Celery和Django-celery
Celery和Django-celery的安装直接pip就好
2)
修改settings.py
在INSTALLED_APPS中加入app:
INSTALLED_APPS = (
...
'djcelery',
'main', # startapp
}
3)
添加RabbitMQ的配置:
import djcelery
djcelery.setup_loader()
BROKER_URL = 'amqp://guest:guest@localhost:5672/'
#或者
#BROKER_HOST = "localhost"
#BROKER_PORT = 5672
#BROKER_USER = "guest"
#BROKER_PASSWORD = "guest"
#BROKER_VHOST = "/"
4)
创建数据库
$ python manage.py syncdb #default
$ python manage.py migrate djcelery #for south
5)
定义和调用tasks
在app(main)目录下新建文件tasks.py
from celery import task
@task()
def add(x, y):
return x + y
6)
开启worker:
$ python manage.py celery worker --loglevel=info
$ #OR
$ python manage.py celeryd -l info --settings=settings
7)
调用任务:
$ python manage.py shell
In [1]: from main.tasks import add
In [2]: a=add.delay(1,1)
In [3]: a.ready() #worker未开启
Out[3]: False
In [4]: a=add.delay(1,1) #开启worker,重新执行
In [5]: a.ready()
Out[5]: True
In [9]: a.get() #Waits until the task is done and returns the retval.
Out[9]: 2
In [10]: a.successful()
Out[10]: True
8)运行index:$ python app.py 8000 ,运行celery:$ python manage.py celeryd -l info --settings=settings
热心网友
时间:2022-04-07 14:17
插件安装
不要立刻下载这个url中的那个链接,要先根据你想要更新目标的rabbitmq版本再去另外一个地方下载相应插件,如:
会列出两大版本的插件目录(选择对应目录进入下载,否则会报错...):
插件如何安装?
进入rabbitmq安装目录,进入plugins目录,将上面这个ez文件拷贝到plugins目录中,然后运行命令来enable这个插件
centos下,默认路径在:/usr/lib/rabbitmq/lib/rabbitmq_server-3.3.4/plugins(版本号可能会变化)
windows下,默认路径在:C:\Program Files\RabbitMQ Server\rabbitmq_server-3.3.4\plugins(版本号可能会变化)