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 相关文章推荐
python3访问sina首页中文的处理方法
Feb 24 Python
简单介绍Python中的struct模块
Apr 28 Python
在Python的struct模块中进行数据格式转换的方法
Jun 17 Python
举例讲解如何在Python编程中进行迭代和遍历
Jan 19 Python
利用python实现命令行有道词典的方法示例
Jan 31 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
Python subprocess模块常见用法分析
Jun 12 Python
Django中URL的参数传递的实现
Aug 04 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
Aug 09 Python
python手机号前7位归属地爬虫代码实例
Mar 31 Python
python 使用openpyxl读取excel数据
Feb 18 Python
只用20行Python代码实现屏幕录制功能
Jun 02 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接收POST数据,解析json数据
2013/06/28 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
JavaScript中5种调用函数的方法
2015/03/12 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
微信小程序 传值取值的几种方法总结
2017/01/16 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
微信小程序使用Promise简化回调
2018/02/06 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
Vue 配合eiement动态路由,权限验证的方法
2018/09/26 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
Python爬取qq空间说说的实例代码
2018/08/17 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
Python os.access()用法实例
2019/02/18 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
Python代码一键转Jar包及Java调用Python新姿势
2020/03/10 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
Python常用类型转换实现代码实例
2020/07/28 Python
Django Form常用功能及代码示例
2020/10/13 Python
Django restful framework生成API文档过程详解
2020/11/12 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
小学生个人先进事迹材料
2014/05/08 职场文书
人力资源管理毕业生自荐信
2014/06/26 职场文书
党员个人剖析材料
2014/09/30 职场文书
宣传稿格式范文
2015/07/23 职场文书
Python实现的扫码工具居然这么好用!
2021/06/07 Python
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript