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
  • asp之家 网络编程 m.aspxhome.com