Celery 是一个“自带电池”的的任务队列。它易于使用,所以你可以无视其所解决问题的复杂程度而轻松入门。它遵照最佳实践设计,所以你的产品可以扩展,或与其他语言集成,并且它自带了在生产环境中运行这样一个系统所需的工具和支持。

在此教程中,你会了解使用 Celery 的最基础部分。包括:

  • 选择和安装消息传输方式(中间人)。
  • 安装 Celery 并创建第一个任务
  • 运行职程并调用任务。
  • 追踪任务在不同状态间的迁移,并检视返回值。

选择中间人

  Celery 需要一个发送和接收消息的解决方案,其通常以独立服务形式出现, 称为 消息中间人 。

  在此介绍redis数据库   安装数据库请看另一篇文章:https://www.cnblogs.com/wbdream/p/10581310.html

安装celery:

  安装celery接口: pip3 install celery

应用:

首先你需要一个 Celery 实例,称为 Celery 应用或直接简称应用。既然这个实例用于你想在 Celery 中做一切事——比如创建任务、管理职程——的入口点,它必须可以被其他模块导入。

在此教程中,你的一切都容纳在单一模块里,对于更大的项目,你会想创建 独立模块 。

让我们创建 tasks.py :

  

from celery import Celery

app = Celery('tasks', broker='redis://:password@localhost//')

@app.task
def add(x, y):
return x + y

Celery 的第一个参数是当前模块的名称,这个参数是必须的,这样的话名称可以自动生成。第二个参数是中间人关键字参数,指定你所使用的消息中间人的 URL,此处使用了 RabbitMQ,也是默认的选项。更多可选的中间人见上面的 选择中间人 一节。例如,对于 RabbitMQ 你可以写 amqp://localhost ,而对于 Redis 你可以写 redis://localhost .

你现在可以用 worker 参数执行我们的程序:

  $ celery -A tasks worker -l debug   # -l debug 日志级别

调用任务

你可以用 delay() 方法来调用任务。

这是 apply_async() 方法的快捷方式,该方法允许你更好地控制任务执行(见 Calling Tasks ):

>>> from tasks import add
>>> res = add.delay(4, 4)
>>> res.get() #获取结构

ready() 方法查看任务是否完成处理:

>>> result.ready()
False

倘若任务抛出了一个异常, get() 会重新抛出异常, 但你可以指定 propagate 参数来覆盖这一行为:

>>> result.get(propagate=False)

如果任务抛出了一个异常,你也可以获取原始的回溯信息:

>>> result.traceback
 

最新文章

  1. Java NIO4:Socket通道
  2. Host is not allowed to connect to this MySQL server 错误的处理方法
  3. 咱们来聊聊JS中的异步,以及如何异步,菜鸟版
  4. __VA_ARGS__可变参数宏
  5. Security » Authorization » 基于声明的授权
  6. 安装和部署ZkeaCMS
  7. Apache目录结构(一)
  8. HDOJ 3547 DIY Cube 解题报告
  9. SDUT 2527 斗地主
  10. SQL中EXISTS的用法(转)
  11. 快速构建Windows 8风格应用10-设备方向
  12. 201521123085 《Java程序设计》第12周学习总结
  13. MongoDB正则表达式
  14. Java 英文面试题
  15. djanogo class meta
  16. python:利用configparser模块读写配置文件
  17. SharePoint Framework 企业向导(九)
  18. 【375】COMP 9021 相关笔记
  19. 关于Base64编码的理解
  20. require.js+knockout.js+.underscore模板引擎的使用

热门文章

  1. 10 种保护 Spring Boot 应用的绝佳方法
  2. 如何在vue中使用ts
  3. Linux 用脚本编写搭建yum本地仓库
  4. Vue-router导航问题
  5. ELK实践(二):收集Nginx日志
  6. centOS改编码
  7. [深度学习工具]·极简安装Dlib人脸识别库
  8. MySQL 5.6的一个bug引发的故障
  9. Ubuntu 下 Galera cluster for MySQL 集群安装
  10. html模板输头部出现"&#65279"