码迷,mamicode.com
首页 > 编程语言 > 详细

python celery介绍和基本使用

时间:2019-10-08 19:13:51      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:bit   影响   终端   deb   orm   应用   程序   tar   异步   

08 python celery介绍和基本使用

 celery分布式任务队列

RPC远程,当执行一条命令,等待远程执行结果返回客户端。

在Linux上可以在后台执行,不影响其他任务执行。(涉及到异步)

 

1、分布式任务运算celery

参考:https://www.cnblogs.com/alex3714/p/6351797.html

任务计划:https://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

 技术图片

  Crontab操作系统本身任务计划

Celery也可以实现定时任务,不需要操作系统。

Rabbitmq也可以实现异步。

 技术图片

   

2、测试代码:

Celery在Windows上执行有问题,在Linux上使用。

 技术图片

  [root@backup testcleery]# celery -A celery_test worker -l debug 启动过程中可能需要调整环境变量。export C_FORCE_ROOT=True

[root@backup testcleery]# export C_FORCE_ROOT=True

[root@backup testcleery]# celery -A celery_test worker -l info

 技术图片

  查看日志,任务模块加载成功。Celery两个模块都已加载下来。

 技术图片

  测试celery模块。

 技术图片

 3、测试同时启动2个worker服务。

[root@backup testcleery]# export C_FORCE_ROOT=True

[root@backup testcleery]# celery -A celery_test worker -l info

[root@backup testcleery]# celery -A celery_test worker -l debug

两个worker抢任务,随机分发任务到worker。

 技术图片

  多开几个终端进行测试,应用程序会随机选择worker。

 

4、来个复杂任务,按照生产情况,执行过程很长的服务

[root@backup testcleery]# vim celery_test2.py

 技术图片

  [root@backup testcleery]# celery -A celery_test2 worker -l info

root@backup testcleery]# python

>>> from celery_test2 import add,cmd

>>> t1 = cmd.delay(‘abcedef‘)

>>> t1.ready()

False

>>> t1.ready()

True

>>> t1.get()

1569491327.817837

>>> 

10s任务卡住了。

 技术图片

  当t1.ready()变成true,可以取值。

 

5、在项目中使用。指定项目文件。

[root@backup testcleery]# mkdir pro

[root@backup testcleery]# cd pro/

[root@backup pro]# pwd

/root/testcleery/pro

[root@backup pro]# touch __init__.py

 技术图片

  项目目录结构和项目启动方式。

[root@backup pro]#

生产项目编写。

 技术图片

  [root@backup testcleery]# vim pro/celery.py

from __future__ import absolute_import, unicode_literals 

from celery import Celery  # 默认从Python绝对路径引入celery包

配置认为列表项。

 技术图片

   启动celery项目。

[root@backup testcleery]# celery -A pro worker -l debug

[root@backup testcleery]# python

Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49)

[GCC 7.2.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> from pro import tasks, tasks2

>>> t1 = tasks2.cmd(‘df‘)

running cmd... df

>>> t1=tasks.xsum.delay([1,2,4,3,2])

>>> t1.get()

12

>>> 

 Celery跟Django结合使用的比较多。后面章节重点讲解。

Celery做定时任务。

后台启动方式,

[root@backup testcleery]# celery multi start w1 -A pro worker -l info  启动

[root@backup testcleery]# celery multi stop w1 -A pro worker -l info  关闭

 技术图片

  观察到,一个worker任务有3个进程在跑。

https://www.cnblogs.com/alex3714/p/6351797.html

停止任务

 celery multi stopwait w1 -A proj -l info

python celery介绍和基本使用

标签:bit   影响   终端   deb   orm   应用   程序   tar   异步   

原文地址:https://www.cnblogs.com/sunnyyangwang/p/11636910.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!