1、安装Django-celery 包:pip install django-celery==3.2.2

2、开启redis服务

  需要使用redis做broker,所以在使用异步和定时任务时需要开启redis服务器

3、配置信息

  

  在INSTALLED_APPS引入模块

  

配置具体信息

# 自定义异步
import djcelery
djcelery.setup_loader()
# BROKER_URL = 'django://' # 使用django做broker,消息代理、队列
BROKER_URL = 'redis://10.255.0.250:6379/4' # 使用redid做broker,消息代理、队列
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' # 这是使用了django-celery默认的数据库调度模型,任务执行周期都被存在你指定的orm数据库中
# BROKER_POOL_LIMIT = 0
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend' # 需要跟踪任务的状态时保存结果和状态,结果存储
# CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/2'
CELERY_TIMEZONE = 'Asia/Shanghai' # 默认上海时区
CELERY_ACCEPT_CONTENT = ['pickle', 'json', 'msgpack', 'yaml']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
# 调度任务
from datetime import timedelta
from celery.schedules import crontab CELERYBEAT_SCHEDULE = {
# 定时任务
'daybreake': {
'task': 'emall_app.tasks.add',
'schedule': crontab(minute=u'', hour=u''),
'args': (2, 3)
},
# 定期任务
'add-every-3-secondes': {
'task': 'emall_app.tasks.add',
'schedule': timedelta(seconds=10),
'args': (5, 5)
}, }

具体的异步任务的方法(如果想在别的模块用到异步,就必须在各个模块的目录中创建task.py文件ps:文件名必须是这个,在这个模块中写方法)

@task
def add(x, y):
return x + y

在别的view文件调用

from emall_app.tasks import add
from prod_core import constants
from prod_core.decorators import json_response @json_response
def task_demo(request):
result = add.delay(2, 2)
log.exception('=========== result')
log.exception(result) if result.ready():
print "Task has run"
if result.successful():
print "Result was: %s" % result.result
else:
if isinstance(result.result, Exception):
print "Task failed due to raising an exception"
raise result.result
else:
print "Task failed without raising exception"
else:
print "Task has not yet run"
return {'code': constants.RESULT_SUCCESS}

4、启动异步任务

启动broker:

celery worker -l info

启动心跳:

python manage.py celery beat

注意:启动broker和启动心跳必须是在两个不同的终端,每次添加异步任务时都必须重新开启心跳和开启broker。且先把根目录下的celerybeat.pid删除

最新文章

  1. 把token带到 http头部 或者验证一下referer
  2. Redis客户端连接池
  3. 如何配置Windows 防火墙,允许SQL Server的远程连接
  4. haproxy +keepalived 原创
  5. SPSS中变量的度量标准
  6. Haxe数据类型
  7. 【Tomcat】java.lang.OutOfMemoryError
  8. iOS多用连接、反向协议、安全
  9. thinkphp实现无限级分类
  10. hdu 5739 割点
  11. eclipse中查看字节码
  12. 异常值处理outlier
  13. kubernetes系列之ConfigMap使用方式
  14. Sharepoint 2016 配置FBA(二) 编辑Web,config文件
  15. FreeCAD_DWG文件格式支持
  16. long long
  17. Centos7 php-fpm root 运行,执行 kill 等系统命令
  18. Oracle 聚合函数
  19. dj forms表单组件
  20. ES使用org.elasticsearch.client.transport.NoNodeAvailableException: No node available 错误解决方法

热门文章

  1. 【C_Language】---C文件学习
  2. SBT与Play配置文件
  3. 今天我的jupyter notebook打不开了,报错原因'No module named 'zmq.eventloop'
  4. 11、python模块的导入
  5. 深入理解Java虚拟机:JVM高级特性与最佳实践
  6. python中的dumps和loads区别
  7. Java 添加、读取、删除Excel形状
  8. go--->beego框架安装
  9. Git详解之协议/速度/安全
  10. webpack--运行npm run dev自动打开浏览器运行首页的两种方式以及热加载