django2+django-celery-beat2.0+celery4.4实现任务的动态添加等、多台机器分布式部署

本文介绍了如何使用Django 2、django-celery-beat 2.0和Celery 4.4在多台机器上实现任务的动态添加、删除和修改,并详细阐述了分布式部署的步骤。通过使用redis作为broker和result backend,实现了任务的分布式处理。在主机器上,通过django-celery-beat动态操作数据库表来管理定时任务,而从机器作为worker接收并执行任务。
摘要由CSDN通过智能技术生成

环境说明

  • win10
  • celery==4.4.2                             分布式任务队列、实现异步与定时
  • Django==2.2.5
  • django-celery-beat==2.0.0         实现定时任务的动态操作(添加/删除)等,此插件本质是对数据库表变化做                                                                             检查,一旦有数据库表改变,调度器重新读取任务进行调度
  • eventlet==0.25.2                        windows下运行worker需要这个库
  • flower==0.9.4                             可以监控任务、worker、队列的情况
  • redis==3.5.2                               此次用redis做broker和result backend

总体描述:

  • 利用celery实现分布式部署,主机器分发任务,不同机器上worker接收;
  • 至少需要两台机器进行模拟(一台机器上开不同的终端模拟多台机器也可以)

主机器A:django、django-celery-beat、celery     负责分发任务

从机器B:celery                                                    做worker机器,监听任务队列,接收主机发送的任务消息,执行相应的任务

borker:此次用redis,可用任意一台机器做broker,A或B或其他都可以

  • 结合django-celery-beat,利用django的orm模型操作sqlite3中django-celery-beat生成的表,实现任务、队列的动态设置

主机器A的目录结构:这里暂时不涉及django web服务,urls.py  views.py可不要

一、简单应用

(1)__init__.py

from celerytest.celery import app as celery_app

# 使得django启动时加载celery的app
__all__ = ('celery_app',)

(2)celery.py        创建celery实例

'''
通过from future import absolute_import来声明使用绝对引用,这样是为了下面的from celery import Celery引用的是系统celery模块,而不是我们自己创建的celery.py
'''
from __future__ import absolute_import, unicode_literals  
from celery import Celery
import os
import celerytest.celeryconfig
#from django.utils import timezone

# 为celery指定DJANGO_SETTINGS_MODULE环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'celerytest.settings')
# 创建celery的实例app,要在指定DJANGO_SETTINGS_MODULE环境变量之后
app = Celery('tasks')
# app = Celery('tasks', broker=CELERY_BROKER_URL, backend=CELERY_RESULT_BACKEND)
app.config_from_object('celerytest.celeryconfig', namespace='CELERY')  # 命名空间 namespace='CELERY'定义所有与celery相关的配置的键名
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值