美文网首页程序员生活不易 我用pythonPython精选
用过才知道真的那么好系列(二)——Celery简单使用

用过才知道真的那么好系列(二)——Celery简单使用

作者: 大阿拉伯人 | 来源:发表于2016-04-25 22:28 被阅读2557次

真正的Celery

一.菜刀小试

新建一个py任务脚本文件取名为tasks.py,如下:

from celery import Celery
celery = Celery('tasks', broker='redis://localhost:6379/0')
@celery.task
def add(x, y):
    return x + y

定义了一个简单的两数相加任务。

当前目录或使用绝对路径下执行命令

celery -A tasks worker -l info  ### -l info表示loglevel等级为info级,也可以设为debug级

该命令会将tasks任务注册进broker服务中,等待分发任务。如下图:


3.png

然后在新建的命令行标签中执行python命令:

>>> from tasks import add
>>> add(2,5)

打印结果为7.傻瓜都知道。回过头来看worker日志,毫无反应,妈比,搞什么鬼!哦,原来真正的使用worker应使用以下命令:

add.delay(2,5)

便可以看到:


4.png

二.独立Celery的配置

上面的例子我们将Celery的配置和任务都写在一个python文件中,这在多模块任务中是很不可取的,接下来我们将Celery的配置独立于一个文件。
新建一个python包myTasks,内置文件如下:
myTasks
+---__init__.py
+---celery.py
+---config.py
+---tasks.py

  • celery.py
from __future__ import absolute_import
from celery import Celery
app = Celery('myTasks', include=['myTasks.tasks'])
app.config_from_object('myTasks.config')
  • config.py
from __future__ import absolute_import
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'
BROKER_URL = 'redis://127.0.0.1:6379/0'
  • tasks.py
from __future__ import absolute_import
from myTasks.celery import app
@app.task
def add(x, y):
    return x + y

在myTasks的同级目录中使用命令行:

$ celery -A myTasks worker -l info

然后便可在其他项目中使用布置好的任务。哈啊,太棒了!

下一篇:
用过才知道真的那么好系列(三)——Celery与Django的结合

相关文章

网友评论

    本文标题:用过才知道真的那么好系列(二)——Celery简单使用

    本文链接:https://www.haomeiwen.com/subject/yfjqrttx.html