Celery文档:http://docs.celeryproject.org

Celery 通过消息进行通信,用专用的工作线程不断监视任务队列以执行新工作。

Celery需要消息传输来发送和接收消息。RabbitMQ和Redis代理传输功能齐全,但也支持无数其他实验解决方案,这里我们选择redis.

下面我们开始写个demo来演示怎么使用它。

  安装redis, 地址: 10.2.2.120:6379

  安装celery

pip install celery

  在windows操作系统上还要安装eventlet

pip install eventlet

  安装redis插件

pip install redis

新建个纯python环境:

tasks.py用来配置任务的, main.py 用来执行

编辑tasks.py

# task:任务
# broker(中间人):存储任务的队列
# worker:真正执行任务的工作者
# backend:用来存储任务执行后的结果 from celery import Celery
import time celery = Celery("tasks",
broker="redis://10.2.2.120:6379/0",
backend="redis://10.2.2.120:6379/0") @celery.task #加上此装饰器,这个函数就变成celery任务了(task)
def send_mail():
print('邮件开始发送....')
time.sleep(10)
print('邮件发送结束!')

编辑main.py

from tasks import send_mail

if __name__ == '__main__':
send_mail.delay() #这样调用,就会变成异步任务了,不会被阻塞

然后我们在 项目目录启动 worker来监听任务

在Linux系统中是不需要制定 --pool的

(bbs) D:\celery_demo>celery -A tasks.celery --pool=eventlet worker --loglevel=info

执行main.py来触发任务,结果会发现,main.py会立马执行结束,并不会被阻塞在那里等待10s

下面是我连续执行两次main.py的结果

最新文章

  1. Redhat/Ubuntu/Windows下安装Docker
  2. HTML5 十大新特性(九)——Web Storage
  3. CC2540中的电压检测
  4. 每天一个linux命令(17):whereis 命令
  5. Scalaz(21)-类型例证:Liskov and Leibniz - type evidence
  6. jQuery里ajax的用法
  7. 读《深入理解Java虚拟机》有感——第一部分:Class文件的结构
  8. C Primer Plus之高级数据表示
  9. HDU 4749-Parade Show(KMP变形)
  10. 我的第一个javascript网页作业
  11. 無心插柳的Linux學習者代言人——蔡德明
  12. CodeForces 940E
  13. springcloud分布式事务终极探讨
  14. bzoj 2599
  15. 循环结构while
  16. j2ee课程设计—基于activiti的请休假系统
  17. 【SDOI2008】仪仗队
  18. 站在DevOps肩膀上的TestOps(一)
  19. socket.io框架
  20. linux 常用清理或备份文件命令

热门文章

  1. Cycle Sort
  2. 每个 Java 开发者都应该知道的 5 个注解
  3. 【洛谷 P2762】 太空飞行计划问题(最大权闭合图)
  4. 关于SQL注入的五大报错注入函数
  5. c语言中的输入
  6. devm_xxx机制
  7. Oracle 内存管理
  8. iOS APP程序启动原理
  9. caffe Python API 之InnerProduct
  10. JavaScript中数组对象详解