Python Django2.0集成Celery4.1教程
作者:Immok 时间:2023-10-17 21:28:52
环境准备
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,Django2.0,Celery4.1
0
投稿
猜你喜欢
SQL Server查询语句大全集锦
2024-01-27 13:44:00
Python改变对象的字符串显示的方法
2022-11-10 17:16:12
CSS的优先级与特殊性
2008-06-24 11:36:00
python中and和or逻辑运算符的用法示例
2022-10-13 03:31:18
解决jupyter运行pyqt代码内核重启的问题
2022-01-29 21:28:40
如何列出SQL数据库中的存储过程?
2010-01-12 19:58:00
python3.3教程之模拟百度登陆代码分享
2023-08-02 23:08:23
获取当前url
2024-05-09 09:04:30
pycharm部署django项目到云服务器的详细流程
2021-05-27 23:32:19
Python3读写ini配置文件的示例
2023-05-29 22:59:21
SQL数据库操作类
2009-01-14 16:26:00
Pickle模块中的dump()和load()方法简介
2023-03-21 04:18:06
centos7.3 安装mysql5.7.18的详细教程
2024-01-12 18:57:00
Pyecharts绘制全球流向图的示例代码
2021-04-30 14:52:56
Pycharm 2020.1 版配置优化的详细教程
2023-06-30 23:11:55
Python中空格的转义字符方式
2021-07-02 01:22:33
python使用cartopy库绘制台风路径代码
2023-08-22 15:50:18
Python代码使用 Pyftpdlib实现FTP服务器功能
2022-02-11 16:40:55
Python数据分析 Pandas Series对象操作
2021-07-17 20:18:52
ASP JSON类源码
2011-04-30 16:38:00