Celery入门指北

其实本文就是我看完Celery的官方文档指南的读书笔记。然后由于我的懒,只看完了那些入门指南,原文地址:First Steps with CeleryNext StepsUsing Celery with Django。ps:本文基于celery版本4.0.2

First Steps with Celery

其实先要理解Celery是干什么的,在我的个人理解里,他是用来管理消息队列的,具体一点讲就是,有一百个任务要分给十个人做,Celery就是负责分这一部分的工作。

在这个入门指南里,官方文档给出了存放这这一百个任务的最佳储存方式,就是RabbitMQ,其次的话就是Redis

安装的话就直接用万能的pip就可以了。

在具体声明任务,调用任务这一块,文档给了非常简单的例子,个人感觉还要找其他稍微复杂一点的例子才能更好地理解是怎么用的。

而关于保存任务运行结果,也是可以放在RebbitMQ里或者其他数据库里。

至于配置文件,在刚入门这个情况下,只用默认就够了。

Next Steps

这一章也只是简单地介绍一些celery的特性,想要更详细的必须要看使用指南。

比如如何在我们的应用里用Celery,在我们应用的根目录下,创建celery.pytasks.py,前者负责生成和配置一个celery的实例,后者则是负责声明任务,任务的形式与声明普通函数类似,就是要在这些函数上面加上一个特定的装饰器。

那么如何调用这个 celery这个实例呢,文档给出的示例是用命令行启动。而调用任务的话,就是用任务的delay()方法。

在调用任务这部分,celery提供了一些有用的API,比如延时功能,偏函数赋值功能(就是先给一部分参数,后面再给另外一部分参数)。

celery还内置了一些基础的任务基元(不懂翻译这个),就是辅助我们构造出复杂的工作流程的工具。

任务路由方面,可以在配置文件中定制,在可以在命令行运行的时候以参数形式传入。

远程控制这部分暂时跳过。

时区设置,可以在配置文件中设置。

优化方面,默认配置是针对普通情况的,想要进一步优化就要看优化文档。不过如果有使用RabbitMQ的话,可以用librabbitmq这个库。

Using Celery with Django

Django和Celery是有特殊的合作方式的。

  • 先在project的文件夹下创建celery.py文件,如前文所讲,这个文件的任务就是配置并实例化celery。
  • 然后也是在这个文件夹下,更改__init__.py,目的是为了启动项目时候,会导入celery.py
  • 然后就是在app的文件夹下创建tasks.py来声明任务,值得注意的就是,这些任务需要用到@shared_task这个装饰器。

具体的话可以看官方的例子

Celery入门指北的更多相关文章

  1. Python 简单入门指北(二)

    Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值.总而言之,函数和普通变量 ...

  2. Python 简单入门指北(一)

    Python 简单入门指北(一) Python 是一门非常容易上手的语言,通过查阅资料和教程,也许一晚上就能写出一个简单的爬虫.但 Python 也是一门很难精通的语言,因为简洁的语法背后隐藏了许多黑 ...

  3. 关于supervisor的入门指北

    关于supervisor的入门指北 在目前这个时间点(2017/07/25),supervisor还是仅支持python2,所以我们要用版本管理pyenv来隔离环境. pyenv 根据官方文档的讲解, ...

  4. Angular 从入坑到挖坑 - Router 路由使用入门指北

    一.Overview Angular 入坑记录的笔记第五篇,因为一直在加班的缘故拖了有一个多月,主要是介绍在 Angular 中如何配置路由,完成重定向以及参数传递.至于路由守卫.路由懒加载等&quo ...

  5. Electron入门指北

    最近几年最火的桌面化技术,无疑是Qt+和Electron. 两者都有跨平台桌面化技术,并不局限于Windows系统.前者因嵌入式而诞生,在演变过程中,逐步完善了生态以及工具链.后者则是依托于Node. ...

  6. SourceGenerator入门指北

    SourceGenerator介绍 SourceGenerator于2020年4月29日在微软的.net blog首次介绍,大概说的是开发者编可以写分析器,在项目代码编译时,分析器分析项目既有的静态代 ...

  7. 后端API入门到放弃指北

    后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一 ...

  8. 关于Gevent的使用指北

    关于Gevent的使用指北 只是看了入门指南,和一个翻译文档.写一下个人读书心得. 其实看完之后,第一个反映就是asyncio这个系统库,感觉gevent现在所做的一些事情是与asyncio很像的,但 ...

  9. 颓废选手在 Ubuntu/Noilinux 下的生存指北

    颓废选手在 Ubuntu/Noilinux 下的生存指北 Hint: 这里的 "#" 都是假注释,复制的时候记得删除 一些基本的生存命令 ctrl + alt + t #调出终端 ...

随机推荐

  1. 初识神经网络NeuralNetworks

    1.神经网络的起源 在传统的编程方法中,我们通常会告诉计算机该做什么,并且将一个大问题分解为许多小的.精确的.计算机可以轻松执行的任务.相反,在神经网络中,我们不告诉计算机如何解决问题,而是让计算机从 ...

  2. MySQL 命令行工具不能向表中插入中文的解决方法

    1.报错图示 解释:sname这个字段 解析出错. 2.解决方法 打开MySQL的安装目录,找到my.ini文件,把57和81行的utf8改成gbk后 保存,最后,重启MySQL的服务 即可. 3.测 ...

  3. hdu1069线性dp

    /* dp[i]:取第i个方块时最多可以累多高 */ #include<bits/stdc++.h> using namespace std; struct node{ int x,y,z ...

  4. poj2279 线性dp

    #include<iostream> #include<cstdio> #include<cstring> #define ll long long using n ...

  5. python接口自动化测试二十四:上传多个附件,参数化

    # 添加多个附件参数化files = [("1.png", "1.png") ("2.png", "2.png") ]d ...

  6. python接口自动化测试十五:解决密码动态,无法登录情况

    解决问题:每次密码都是变化的,无法通过账号密码登录 (总不能每次去fiddler复制吧????) 解决思路: 1.先用selenium调用浏览器(不会selenium的自己想办法了), 2.登录后从浏 ...

  7. 详解kubeadm生成的证书(转)

    https://docs.lvrui.io/2018/09/28/%E8%AF%A6%E8%A7%A3kubeadm%E7%94%9F%E6%88%90%E7%9A%84%E8%AF%81%E4%B9 ...

  8. 《Java程序性能优化》之设计优化

    豆瓣读书:http://book.douban.com/subject/19969386/ 第一章 Java性能调优概述 1.性能的参考指标 执行时间: CPU时间: 内存分配: 磁盘吞吐量: 网络吞 ...

  9. 51Nod 算法马拉松28 C题 栈 单调队列

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - 51Nod1952 题意概括 有一个栈,有3种操作: Ο 从栈顶加入一个元素 Ο 从栈底加入一个元素 Ο 从栈 ...

  10. 022 Spark shuffle过程

    1.官网  http://spark.apache.org/docs/1.6.1/configuration.html#shuffle-behavior Spark数据进行重新分区的操作就叫做shuf ...