【Python】Django2.0集成Celery4.1详解
环境准备
- Python3.6
- pip install Django==2.0.1
- pip install celery==4.1.0
- pip install eventlet (加入协程支持)
- 安装erlang和rabbitMQ-server
配置settings.py文件
- 在settings.py文件中添加如下内容
...
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
CELERY_BROKER_URL = 'amqp://guest:guest@localhost:5672'
在settings.py同级目录创建celery.py
- celery.py
- 注意替换: project_name
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
# 设置环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings')
# 注册Celery的APP
app = Celery('project_name')
# 绑定配置文件
app.config_from_object('django.conf:settings', namespace='CELERY')
# 自动发现各个app下的tasks.py文件
app.autodiscover_tasks()
修改settings.py同级目录的init.py文件
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ['celery_app']
在某个APP中创建tasks.py文件
- tasks.py
# -*- coding: utf-8 -*-
from celery.task import task
# 自定义要执行的task任务
@task
def print_hello():
return 'hello celery and django...'
配置周期性任务或定时任务
- 再次编辑settings.py文件,添加如下内容
- 定时任务的配置格式参考:http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html
from celery.schedules import crontab
CELERY_BEAT_SCHEDULE = {
# 周期性任务
'task-one': {
'task': 'app.tasks.print_hello',
'schedule': 5.0, # 每5秒执行一次
# 'args': ()
},
# 定时任务
'task-two': {
'task': 'app.tasks.print_hello',
'schedule': crontab(minute=0, hour='*/3,10-19'),
# 'args': ()
}
}
启动worker和定时任务
- 启动worker (切换到manage.py同级目录下执行)
celery -A project_name worker -l info -P eventlet
- 启动定时任务或周期性任务
celery -A project_name beat -l info
- 后台启动定时任务或周期性任务
celery multi start w1 -A fushentang -l info -P eventlet
存放任务结果的扩展
pip install django-celery-results- Install APP
INSTALLED_APPS = (
...,
'django_celery_results',
)
- 生成数据库表:
python manage.py migrate django_celery_results - 配置settings:
CELERY_RESULT_BACKEND = 'django-db'(用数据库存放任务执行结果信息)
【Python】Django2.0集成Celery4.1详解的更多相关文章
- python3下Django2.0配置最新xadmin详解
1,打开pycharm,创建一个Django项目 2,安装Django,默认是最新版本,pip3 install -i https://pypi.douban.com/simple/ django 3 ...
- Python学习一:序列基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7858473.html 邮箱:moyi@moyib ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- python 3.x 爬虫基础---Urllib详解
python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 前言 爬虫也了解了一段时间了希望在半个月的时间内 ...
- python中argparse模块用法实例详解
python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...
- python selenium 三种等待方式详解[转]
python selenium 三种等待方式详解 引言: 当你觉得你的定位没有问题,但是却直接报了元素不可见,那你就可以考虑是不是因为程序运行太快或者页面加载太慢造成了元素不可见,那就必须要加等待 ...
- python设计模式之迭代器与生成器详解(五)
前言 迭代器是设计模式中的一种行为模式,它提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示.python提倡使用生成器,生成器也是迭代器的一种. 系列文章 python设计模 ...
- **Python中的深拷贝和浅拷贝详解
Python中的深拷贝和浅拷贝详解 这篇文章主要介绍了Python中的深拷贝和浅拷贝详解,本文讲解了变量-对象-引用.可变对象-不可变对象.拷贝等内容. 要说清楚Python中的深浅拷贝,需要 ...
- python+requests接口自动化测试框架实例详解
python+requests接口自动化测试框架实例详解 转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...
随机推荐
- LARAVEL快速入门
一.查询 $map = []; $map[] = ['u.store_id','=',0]; $map[] = ['u.reg_time','<',time()]; $map[] = ['u.u ...
- 域控安全-EventID 4662&Powershell将Schema下Objects的schemaIDGUID属性离线保存
首先看一下EventID 4662的样子 0x01 什么情况下会产生该日志呢? 该日志出现在对Active Directory Object设置SACL时会出现 0x02 为什么要监控该日志呢? 1. ...
- 在svg文间画图过程中放大缩小图片后,坐标偏移问题
//鼠标坐标:在SVG经过缩放.偏移.ViewBox转换后,鼠标坐标值 var mouseCoord = { x : ., y : . }; //用户坐标:相对于原始SVG,坐标位置 var user ...
- stand up meeting 12/22/2015 && 用户体验收录
part 组员 工作 工作耗时/h 明日计划 工作耗时/h UI 冯晓云 完善页面切换,尝试子页面设计 4 完善页面切换和子页面 ...
- 带权值的LCA
例题:http://poj.org/problem?id=1986 POJ1986 Distance Queries Language: Default Distance Queries Time L ...
- python白帽子/黑客/实战编程教程
Python搜索爬虫抓取超高清视频教程_第一期Python搜索爬虫抓取超高清视频教程_第二期Python搜索爬虫抓取视频教程_第三期Python搜索爬虫抓取视频教程_第四期Python搜索引擎爬虫抓取 ...
- Matlab学习-(1)
1. 认识Matlab (1)MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simul ...
- Pytorch实现的语义分割器
使用Detectron预训练权重输出 *e2e_mask_rcnn-R-101-FPN_2x* 的示例 从Detectron输出的相关示例 使用Detectron预训练权重输出 *e2e_keypoi ...
- react: typescript system params optimize
1.system-params-service import paramCache from "../common/param-cache" import RequestPromi ...
- 借助leetcode题目来了解BFS和DFS
广度优先和深度优先搜索 前言 看着这两个搜索的前提的是读者具备图这一数据结构的基本知识,这些可以直接百度一波就了解了.图也像树一样,遍历具有很多的学问在里面,下面我将借用leetcode的题目讲解一下 ...