这篇文章给大家介绍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文件,特别注意:项目同名的目录下
复制内容到该文件
修改两处内容
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}')