如何使用django+celery+RabbitMQ实现异步执行
2024-09-01 10:26:06
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
最新文章
- 非root用户 gcc安装
- REST实战:SeverClient项目+RESTful理论
- C 和指针 学习随便
- 用nodej和glub-watcher写的监听go 项目自动编译,很鸡肋
- 桥牌笔记L4D17:小心阻塞
- js判断鼠标位置是否在某个div中
- (实用篇)微信网页授权(OAuth2.0) PHP 源码简单实现
- HTTP头信息(转)--1
- 基于vfs实现自己的文件系统
- [转] Java程序员学C#基本语法两个小时搞定(对比学习)
- linux的PAM认证和shadow文件中密码的加密方式
- 锁、C#中Monitor和Lock以及区别
- [development][C] 条件变量(condition variables)的应用场景是什么
- h5登录页面
- HDU 1875 畅通工程再续 最小生成树问题
- ubuntu 安装 theano
- Centos 安装 WPS
- Gradle在Windows环境与Linux上配置有哪些不同?
- 启动JAR Hadoop任务
- linux ping IP地址与telnet 测试IP端口
热门文章
- Linux各种重要配置文件详解
- [Web] Web请求过程之二:DNS 域名解析
- numpy二进制转换和范围缩放
- CF&;&;CC百套计划1 Codeforces Round #449 A. Nephren gives a riddle
- 51 nod 1205 流水线调度
- Composer学习之————Ubuntu14.04下安装Composer
- MongoDB - MongoDB CRUD Operations, Bulk Write Operations
- 创建分区swap分区
- linux tar 解压出错
- [Openwrt 扩展下篇] Openwrt搭建私有云Owncloud 9