博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django中Celery简介
阅读量:5135 次
发布时间:2019-06-13

本文共 2431 字,大约阅读时间需要 8 分钟。

初识Celery:

Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,可将一些耗时的任务放入该消息队列中处理,一些定时任务也可以放入队列中自动执行,如定期去统计日志,数据备份,或者其他的统计任务。

Celery基本工作流程:

Celery的安装与配置

pip install celerypip install celery-with-redispip install django-celeryapt install redis-server
三方库的安装

django中的配置:

ALLOWED_HOSTS = ['*']INSTALLED_APPS = (      ...      'djcelery',    }import djcelerydjcelery.setup_loader()BROKER_URL='redis://localhost:6379/1' #任务队列存放的位置CELERY_CONCURRENCY=2  #设置worker的并发数量CELERY_RESULT_BACKEND = 'redis://localhost:6379/2' #结果存放的位置
View Code

在settings的同级目录下新建一个celery.py的文件

from __future__ import absolute_import  #绝对路径导入from celery import Celery    from django.conf import settingsimport os#设置系统的环境配置用的是Django的os.environ.setdefault('DJANGO_SETTING_MODULE','day9_ex.settings')#实例化celeryapp = Celery('mycelery')#设置时区app.conf.CELERY_TIMEZONE = 'Asia/Shanghai'#指定celery的配置来源 用的是项目的配置文件settings.pyapp.config_from_object('django.conf:settings')#让celery 自动去发现我们的任务(task)app.autodiscover_tasks(lambda : settings.INSTALLED_APPS)
View Code

在settings.py的同级目录的__init__.py文件中导入

#要写在第一行from __future__ import absolute_import   #导入工程目录下celery中的app并起别名from day9_ex.celery import app as celery_app
View Code

Celery的使用

在需要使用异步任务的app目录下新建tasks.py,将要执行的异步任务放在这里面

from celery import taskimport time@taskdef test(n):    for i in range(n):        print(i)        time.sleep(3)
View Code

在views视图函数中进行调用

from django.http import HttpResponsefrom django.shortcuts import renderfrom app.tasks import testdef test_celery(req):    test.delay(6)    return HttpResponse('ok')
View Code

开始执行之前要先进行数据库表的迁移

然后启动worker,命令为python manage.py celery worker --loglevel=info (或者celery -A 工程名 worker -I info)      (PS:日志级别可以不写)

然后在浏览器输入url启动项目

注意:修改tasks.py的内容后要重启celery的服务!

 

定时任务的配置:

在上述配置的基础上在settings.py中加入下面配置

from datetime import timedeltaCELERYBEAT_SCHEDULE = {    'schedule-test': {        'task': 'app.tasks.test2',   #指定要执行的函数        'schedule': timedelta(seconds=6),   # 执行的计划时间,每6秒执行一次,可自定义        'args': ()  #参数    },}
View Code

还可使用下面这种配置

from celery.schedules import crontabCELERYBEAT_SCHEDULE = {    'schedule-test': {        'task': 'app.tasks.test2',  #指定要执行的函数        'schedule': crontab(minute=48,hour=11),   # 指定具体执行的计划时间        'args': ()   #参数    },}
View Code

crontab的参数设置如上图,也可以一个参数设置多个值,如day_of_week='1,2',表示每周一周二。

具体使用同异步处理。

先启动python manage.py celery worker,再启动python manage.py celery beat

注意:你的任务一定要确保是可以正常执行的

 

 

转载于:https://www.cnblogs.com/wusir66/p/9892209.html

你可能感兴趣的文章
Linux环境下MySql安装和常见问题的解决
查看>>
lrzsz——一款好用的文件互传工具
查看>>
ZPL语言完成条形码的打印
查看>>
这20件事千万不要对自己做!
查看>>
Linux环境下Redis安装和常见问题的解决
查看>>
HashPump用法
查看>>
cuda基础
查看>>
Vue安装准备工作
查看>>
.NET 母版页 讲解
查看>>
最大权闭合子图
查看>>
oracle 创建暂时表
查看>>
201421410014蒋佳奇
查看>>
【03月04日】A股滚动市盈率PE历史新低排名
查看>>
Xcode5和ObjC新特性
查看>>
jvm slot复用
查看>>
高并发系统数据库设计
查看>>
LibSVM for Python 使用
查看>>
Centos 7.0 安装Mono 3.4 和 Jexus 5.6
查看>>
Windows 7 上安装Visual Studio 2015 失败解决方案
查看>>
iOS按钮长按
查看>>