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删除

Django设置异步任务的更多相关文章

  1. django设置并获取cookie/session,文件上传,ajax接收文件,post/get请求及跨域请求等的方法

    django设置并获取cookie/session,文件上传,ajax接收文件等的方法: views.py文件: from django.shortcuts import render,HttpRes ...

  2. django 设置静态文件,static

    django 设置静态文件,static 一.搜集静态文件 1.1 命令行查看 collectstatic guoguos-MacBook-Pro:mysite guoguo$ python mana ...

  3. PostgreSQL Replication之第四章 设置异步复制(1)

    执行完您的第一个即时恢复(PITR,Point-In-Time-Recovery),我们准备在一个真正的复制设置上工作.在本章,您将学会如何设置异步复制和流.我们的目标是确保您可以实现更高的高可用和更 ...

  4. 当Django设置DEBUG为False时,发现admin和html的静态资源文件加载失败的解决办法

    当Django设置DEBUG为False时,发现admin和html的静态资源文件加载失败,折腾一段时间终于找到解决办法: 1.先在setting文件增加BASE_DIR(项目的路径) BASE_DI ...

  5. Django --- celery异步任务与RabbitMQ模块

    一 RabbitMQ 和 celery 1 celery Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务, ...

  6. celery+django+mq 异步任务与定时任务

    参考 celerypip install celery==4.1.1https://www.cnblogs.com/wdliu/p/9530219.htmlhttps://www.jianshu.co ...

  7. Django设置

    运行 django-admin.py startproject [project-name] 命令会生成一系列文件,在Django 1.6版本以后的 settings.py 文件中有以下语句: # B ...

  8. Django设置TIME_ZONE和LANGUAGE_CODE为中国区域

    Django默认的timezone是 TIME_ZONE = 'America/Chicago' LANGUAGE_CODE = 'en-us' 设置为中国区域: TIME_ZONE = 'Asia/ ...

  9. Django 设置cookies与获取cookies.

    在Django里面,使用Cookie和Session看起来好像是一样的,使用的方式都是request.COOKIES[XXX]和request.session[XXX],其中XXX是您想要取得的东西的 ...

随机推荐

  1. swagger生成错误问题 汇总解决

    Unable to render this definition The provided definition does not specify a valid version field. Ple ...

  2. 美食家app开发日记

    民以食为天. 作为一个20年几乎没做过饭的吃货,从这个假期开始,想利用些时间,自己动手尝试,做些好吃的出来,一方面给父母减轻点负担,获得点成就感,一方面体验生活,学学厨艺,感受生活的乐趣和美好,其三, ...

  3. 聊一聊 MySQL 中的数据编辑过程中涉及的两阶段提交

    MySQL 数据库中的两阶段提交,不知道您知道不?这篇文章就简单的聊一聊 MySQL 数据库中的两阶段提交,两阶段提交发生在数据变更期间(更新.删除.新增等),两阶段提交过程中涉及到了 MySQL 数 ...

  4. keras模型可视化

    #keras.utils.vis_utils模块提供了画出Keras模型的函数(keras版本2.0.2以上)pip install graphviz pip install pydotplus im ...

  5. 网络流(最大流-Dinic算法)

    摘自https://www.cnblogs.com/SYCstudio/p/7260613.html 网络流定义 在图论中,网络流(Network flow)是指在一个每条边都有容量(Capacity ...

  6. IDEA debug下取消后续操作

    有时进行测试时,不想后面的代码执行 具体应该怎么请看下文: 测试代码 public class demo { public static void main(String[] args) { Syst ...

  7. Linux文件内容重定向

    文件描述符 可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作. 用户可以自定义文件描述符范围是:3-num,这个最大数字, ...

  8. JQuery--JQuery面向对象编程快速入门-插件开发

    JQuery源码片段分析 (function(window){ /** * jQuery是一个函数 是一个对象 是一个构造器函数 */ var jQuery = function( selector, ...

  9. hadoop-2.10.0安装hive-2.3.6

    公司建立数仓,hive是必不可少的,hive是建立在hadoop基础上的数据库,前面已经搭建起了hadoop高可用,要学习hive,先从搭建开始,下面梳理一下hive搭建过程 1.下载hive安装包 ...

  10. 3.部署场景1:带有遗留的Open vSwitch

    部署场景1:带有遗留的Open vSwitch 此场景描述了使用带有Open vSwitch(OVS)的ML2插件的OpenStack网络服务的(基本)实现. 遗留的实现通过为普通用户提供一种方法来管 ...