联系我们 - 广告服务
您的当前位置:官网首页 > 资讯 > 时局 >

分布式任务队列

来源: 编辑: 时间:2019-09-06
导读:

消费者worker:worker是执行任务的单元,在celery任务队列中属于消费者。worker会不断地监听队列,一旦有任务添加进来,就会将任务取出来进行执行。worker还可以运行在多台机器上,只要它们都指向同一个broker就可以。

结果存储backend:结果存储backend,顾名思义就是将worker执行后得到的结果存储起来。celery中有几个内置的结果存储可供选择,包括sqlalchemy / django orm、redis、rabbitmq、mamcached等。

 

     celery4.0版本是支持python2.7的最后一个版本,所以如果你还在用py2的话,可能要选择安装celery3或者更早的版本。我本人用的python版本是python3.7,然后安装的celery版本是4.3。安装的话使用pip安装就好:

pip install celery

如果pip安装出错的话,可以去进行下载。在使用pip安装的时候会自动安装一些相关依赖,如果这些依赖安装出错的话,搜一下相应版本的wheel文件下载安装即可。

中间件broker我选择使用的是redis,这里就不说redis怎么安装了,上一篇博客中有ubuntu下安装redis的介绍。

 

  在使用celery的时候,第一件事是要创建一个celery实例,一般称之为应用,简称为app。创建一个test.py,其中代码如下:

1 from celery import celery
4 app = celery
7 @app.task
8 def add:
9 return x + y

在创建好应用之后,就可以使用celery命令执行程序运行worker了:

celery -a test worker -l info

运行后可以看到如下图:

有关可用命令行选项的完整列表,执行如下命令:

celery worker --help

要调用任务,可以使用delay方法。

该任务会返回一个asyncresult实例,可用于查询任务状态、获取任务返回值等。此时查看前面运行的服务器,会看到有如下信息:

received task: test.add[e7f01461-8c4d-4c29-ab6b-27be5084ecd9]

task test.add[e7f01461-8c4d-4c29-ab6b-27be5084ecd9] succeeded in 0.006505205000166825s: 5

在前面定义的时候,已经选择使用redis作为结果后端了,所以任务执行后的结果会保存到redis中。而且,在调用任务的时候,还可以进行如下操作:

其中ready方法会返回该任务是否已经执行,get方法则会获取任务返回的结果。

由于celery的配置信息比较多,因此一般会创建一个配置文件来保存这些配置信息,通常会命名为celeryconfig.py。在test.py所在文件夹下新建配置文件celeryconfig.py,其中的代码如下:

 1 # broker
 2 broker_url = 'redis://127.0.0.1:6379'
 3 # backend
 4 celery_result_backend = 'redis://127.0.0.1:6379'
 6 # 设置时间参照,不设置默认使用的utc时间
 7 celery_timezone = 'asia/shanghai'
 8 # 指定任务的序列化
 9 celery_task_serializer = 'json'
10 # 指定执行结果的序列化
11 celery_result_serializer = 'json'

然后修改下test.py中的代码:

 1 from celery import celery
 4 app = celery
 5 app.config_from_object
 8 @app.task
 9 def add:
10 return x + y
责任编辑:

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

网友评论:

在“\templets\demo\comments.htm”原来的内容全部删除,插入第三方评论代码,如果不需要评论功能,删除comments.html里面的内容即可
推荐使用友言、多说、畅言(需备案后使用)等社会化评论插件

Copyright © 2018 k8凯发国际娱乐k8凯发国际娱乐-k8凯发国际娱乐下载-k8凯发官方 All Rights Reserved Power by DedeCms
本站所有资讯来源于网络 如有侵权请联系QQ:9490489
Top