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实现k均值算法示例(k均值聚类算法)
Mar 16 Python
Python中文件操作简明介绍
Apr 13 Python
python实现比较两段文本不同之处的方法
May 30 Python
python+matplotlib绘制旋转椭圆实例代码
Jan 12 Python
python中logging包的使用总结
Feb 28 Python
详解tensorflow载入数据的三种方式
Apr 24 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
Tensorflow 多线程与多进程数据加载实例
Feb 05 Python
opencv+python实现均值滤波
Feb 19 Python
Python类和实例的属性机制原理详解
Mar 21 Python
详解Python中的for循环
Apr 30 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 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
加强版phplib的DB类
2008/03/31 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
js上传图片预览的实现方法
2017/05/09 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
python基础教程之元组操作使用详解
2014/03/25 Python
python解析基于xml格式的日志文件
2017/02/25 Python
python实现停车管理系统
2018/11/30 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
手把手教你Python yLab的绘制折线图的画法
2019/10/23 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
基于opencv实现简单画板功能
2020/08/02 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
海蓝之谜英国官网:La Mer英国
2020/01/15 全球购物
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
环境工程专业自荐信范文
2014/03/18 职场文书
家长会学生演讲稿
2014/04/26 职场文书
平安工地建设方案
2014/05/06 职场文书
大学生读书笔记大全
2015/07/01 职场文书
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技