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

真正的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服务中,等待分发任务。如下图:

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

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

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

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

add.delay(2,5)

便可以看到:

《用过才知道真的那么好系列(二)——Celery简单使用》 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的结合

    原文作者:大阿拉伯人
    原文地址: https://www.jianshu.com/p/b7f843f21c46
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞