用过才知道真的那么好系列(二)——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服务中,等待分发任务。如下图:


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的结合

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容