celery 简介

celery是一个异步执行工具,主要用于异步执行一些比较长的任务时用到。

简单的用法

step 1. 创建一个tasks.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# tasks.py
import time
from celery import Celery

celery = Celery('tasks', broker='redis://127.0.0.1:6379/0')

@celery.task
def sendmail(mail):
print('sending mail to %s...' % mail['to'])
time.sleep(2.0)
print('mail sent.')


@celery.task
def hello():
return 'google'

step 2. 启动celery后台进程

1
celery -A tasks work -l debug

step 3. 在另外的程序中来引用这个文件,并调用里面的函数

1
2
from tasks import sendmail
sendmail.delay(test@qq.com)

update @ 2018-05-31

在flask中,调用的时候,会遇到需要app上下文的东西,也有很多人去各种构造各种场景。
我认为最好的方式就是解耦,celery调用的时候,一切方法都要做到跟flaskapp的上下文无关,中间做好一层桥接就行了。

参考资料

  1. celery有什么难理解的?
  2. celery遇到的一些坑。