Celery怎么在Django中使用-创新互联

这篇文章给大家介绍Celery怎么在Django中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

创新互联是一家专业提供大庆企业网站建设,专注与网站建设、网站设计H5开发、小程序制作等业务。10年已为大庆众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

(一)、概述


Celery是一个简单、灵活和可靠的基于多任务的分布式系统,为运营提供用于维护此系统的工具。专注于实时处理的任务队列,同时也支持任务的调度。执行单元为任务(task),利用多线程这些任务可以被并发的在单个或多个职程(worker)上运行。


Celery通过消息机制通信,通常通过中间人(broker)来分配和调节客户端与职程服务器(worker)之间的通信。客户端发送一条消息,中间人把消息分配给一个职程,最后由职程来负责执行此任务。


Celery可以有多个职程和中间人,这样提高了高可用性和横向的扩展能力


Celery由python语言开发,但是该协议可以用任何语言拉力实现,例如:Django中的Celery、node中的node-celery和php中的celery-php


(二)、Django中使用Celery的流程与配置


导入Celery:pip3 install Celery


在 与项目同名的目录下 创建celery.py文件,特别注意:项目同名的目录下

复制内容到该文件


修改两处内容

  • os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')中的proj改为项目名
  • app = Celery('pro')中的pro改为项目名
import os

from celery import Celery

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')

app = Celery('pro')

# Using a string here means the worker doesn't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
#  should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY')

# Load task modules from all registered Django app configs.
app.autodiscover_tasks()


@app.task(bind=True)
def debug_task(self):
  print(f'Request: {self.request!r}')

本文名称:Celery怎么在Django中使用-创新互联
本文URL:http://scyanting.com/article/ccjcsj.html