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 相关文章推荐
python实现排序算法
Feb 14 Python
python之wxPython应用实例
Sep 28 Python
PyQt5每天必学之关闭窗口
Apr 19 Python
基于python实现学生管理系统
Oct 17 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
Jan 23 Python
python使用for循环计算0-100的整数的和方法
Feb 01 Python
Python远程视频监控程序的实例代码
May 05 Python
python网络爬虫 CrawlSpider使用详解
Sep 27 Python
Python线程指南分享
Nov 19 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
Feb 26 Python
matplotlib 多个图像共用一个colorbar的实现示例
Sep 10 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 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
一个多文件上传的例子(原创)
2006/10/09 PHP
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
2015/05/12 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
Yii1.1框架实现PHP极光推送消息通知功能
2018/09/06 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
2019/10/12 PHP
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
javascript动画浅析
2012/08/30 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
javascript实现汉字转拼音代码分享
2015/04/20 Javascript
js调出上下文菜单的实例
2015/12/17 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
Python连接mysql数据库的正确姿势
2016/02/03 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
python中的协程深入理解
2019/06/10 Python
python实现取余操作的简单实例
2020/08/16 Python
Matplotlib animation模块实现动态图
2021/02/25 Python
美国高端牛仔品牌:Silver Jeans
2019/12/12 全球购物
JSF如何进行表格处理及取值
2012/08/06 面试题
SQL SERVER面试资料
2013/03/30 面试题
迟到检讨书5000字
2014/01/31 职场文书
《胡杨》教学反思
2014/02/16 职场文书
请假条格式范文
2014/04/10 职场文书
高一地理教学工作总结
2015/08/12 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
Mysql 设置boolean类型的操作
2021/06/04 MySQL