Django ,Celery 工程配置

项目介绍

在接口服务中,如果遇到后台处理时间比较长的需求,可以考虑使用celery 这样异步消息处理机制。一般在使用celery时都需要搭配使用一个broker, 本项目是使用的公司已有的rabbitmq,故对rabbitmq 这块没有太多实践,本文就简单略过。
Django 与 Celery在部署时,是以两个独立的进程部署的, Django 负责接收消息,并发送到broker , celery 负责轮询读取broker中的消息,并及时处理。所以在使用Jenkins 部署时,需要两套jenkins Pipline.而在使用Celery时,消息缓存机制(Broker) 可以是redis,也可以是RabiitMq (具体可以参照:https://docs.celeryproject.org/en/stable/getting-started/first-steps-with-celery.html#id3).
Django与celery协同工作图

包的引入

在Django中引入的celery包的版本为:
Django==1.11.29 celery==4.3.1

在Django中使用celery

配置broker 我在开发中是直接使用的公司提供的rabitMQ,所以Celery配置文件这块,主要是告知celery ,mq的地址,具体的配置如下:

CELERY_RABBITMQ_HOST = "rabbitmq.i.test.sz.xxxx.io"
CELERY_RABBITMQ_PORT = 5672
CELERY_RABBITMQ_USER = "ssc-data"
CELERY_RABBITMQ_PASSWORD = "*******"(密码加密了!!!)
CELERY_RABBITMQ_VHOST = 'ssc-data-test’

在celery中需要引入Django

由于在celery任务中会用到一些Django的能力,比如:ORM等,所以在celery中启动时,需要加载Django,需要加载DJANGO_SETTINGS_MODULE。
总体说来,程序的启动为:在deploy 文件夹下的 通过:command=celery worker -A celery_tasks -l info -f /dev/stdout -Q shopee-ssc-data-spx-export -c 4 -P gevent 启动程序。在这种启动模式下,主要有以下四个步骤:

  1. 创建一个用于存放celery的文件夹 比如 celery_tasks。
  2. celery_tasks 的下面 需要以tasks 文件夹命名,将需要调用的celery任务放到这个文件夹下, 不然会报找不到未注册的方式。
  3. 在tasks 中创建app, 可以将Django 的配置引入。
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'data_api.settings’) #引入Django配置,不然会在运行时报找不到’DJANGO_SETTINGS_MODULE‘
app = Celery('celery_tasks')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(['celery_tasks’]) # 这个名字需要与启动程序时的名称保持一致 ’celery_tasks’,也要与放有celery任务的文件夹一致;
  1. 在celery 中程序的编写
    这部分比较简单,在celery中程序的编写 与 传统的没有太大区别。
    唯一需要主要的是在程序 开始处添加注解:@shared_task(bind=True)
在celery 中程序的编写
这部分比较简单,在celery中程序的编写 与 传统的没有太大区别。
唯一需要主要的是在程序 开始处添加注解:@shared_task(bind=True)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值