Python Django2.0集成Celery4.1教程


Posted in Python onNovember 19, 2019

环境准备

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

这里备注一下:最好使用supervisord来管理上面这2条命令

存放任务结果的扩展

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教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
gearman的安装启动及python API使用实例
Jul 08 Python
python实现通过代理服务器访问远程url的方法
Apr 29 Python
Python入门学习之字符串与比较运算符
Oct 12 Python
python使用KNN算法手写体识别
Feb 01 Python
python实现zabbix发送短信脚本
Sep 17 Python
Python函数定义及传参方式详解(4种)
Mar 18 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 Python
python实现在内存中读写str和二进制数据代码
Apr 24 Python
Python中的全局变量如何理解
Jun 04 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 Python
10行Python代码实现Web自动化管控的示例代码
Aug 14 Python
通过celery异步处理一个查询任务的完整代码
Nov 19 #Python
Django 自动生成api接口文档教程
Nov 19 #Python
wxpython实现按钮切换界面的方法
Nov 19 #Python
Python性能分析工具Profile使用实例
Nov 19 #Python
使用apiDoc实现python接口文档编写
Nov 19 #Python
wxPython绘图模块wxPyPlot实现数据可视化
Nov 19 #Python
Python浮点数四舍五入问题的分析与解决方法
Nov 19 #Python
You might like
php session处理的定制
2009/03/16 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
使用dynatrace-ajax跟踪JavaScript的性能
2010/04/12 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
js查找节点的方法小结
2015/01/13 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
vue 运用mock数据的示例代码
2017/11/07 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
2018/09/10 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
详解a标签添加onclick事件的几种方式
2019/03/29 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
python实现用户答题功能
2018/01/17 Python
Python操作MySQL模拟银行转账
2018/03/12 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
Python实现最大子序和的方法示例
2019/07/05 Python
python爬虫之遍历单个域名
2019/11/20 Python
Mac中PyCharm配置Anaconda环境的方法
2020/03/04 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
canvas像素点操作之视频绿幕抠图
2018/09/11 HTML / CSS
小升初自荐信怎么写
2015/03/26 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python