Python Django2.0集成Celery4.1教程
作者:Immok 发布时间:2023-10-17 21:28:52
标签: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
这里备注一下:最好使用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' (用数据库存放任务执行结果信息)
来源:https://blog.csdn.net/ns2250225/article/details/79412685


猜你喜欢
- 一、python判断文件和文件夹是否存在、创建文件夹 >>> import os>>> os.path.
- 当在php中使用mb_detect_encoding函数进行编码识别时,很多人都碰到过识别编码有误的问题,例如对与GB2312和UTF- 8
- 1. 获取abi文件合约的接口在remix工具中编译合约后,会有一个abi,复制然后新建一个xx.abi文件,把赋值的粘贴到里面注意:代码变
- Django是用python写的web开发框架,其特点是:1.重量级框架,内部封装了很多的功能组件,使开发变的简便快速,2.MVT模式:前后
- 1.random.random():会随机生成0-1之间的小数例如:2.random.uniform(min,max):会随机生成 min
- Python操作Mysql最近在学习python,这种脚本语言毫无疑问的会跟数据库产生关联,因此这里介绍一下如何使用python操作mysq
- Python是一门简单易学的编程语言,语法简洁而清晰,并且拥有丰富和强大的类库。与其它大多数程序设计语言使用大括号不一样 ,它使用缩进来定义
- //图片上传<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT> Function GetUpload
- Typora是什么?Typora是一款支持实时预览的Markdown文本编辑器。支持即时渲染技术,这也是与其他Markdown编辑器最显著的
- 错误展示new_model = load_model(“model.h5”)报错:1、keras load_model valueError
- 如何发送一个XMLHttpRequest的检索的特定部分HTML标题数据。<html> <head> <tit
- 在pycharm中的jupyter notebook上经常会出现端口被占用,ipython的port端口一般是8888如果打开了jupyte
- 1>保存为二进制文件,pkl格式import picklepickle.dump(data,open('file_path
- 目录简介Spare data的例子SparseArraySparseDtypeSparse的属性Sparse的计算SparseSeries
- python3的编码问题。打开python开发工具IDLE,新建‘codetest.py'文件,并写代码如下:import sysp
- I. 简介MoviePy 是什么?MoviePy 是一个使用 Python 编写的开源库,用于在视频编辑中创建、编辑和操作视频文件。它是一款
- 看看下面:function zr4(y)' 准备数据dim z(10)z(1)="ONE&q
- myisam_max_[extra]_sort_file_size足够大delay_key_write减少io,提高写入性能bulk_ins
- 目录1.触发器是什么?2.创建触发器创建触发器的语法如下:创建多个执行语句的触发器: NEW和OLD的使用:3.使用触发器1.触发
- 最最简单的操作import numpy as npimport matplotlib.pyplot as pltfig = plt.figu