在flask 中使用celery 是特别简单的,celery官网都没有特别介绍如何使用。
使用celery首先要知道怎么配置celery。
1. 实例化celery
celery = Celery(__name__,
broker=config['celery']['broker'],
backend=config['celery']['backend']
)
这里的celery 其实在很多文档中都取名app,为区别flask 实例化的app,这里就这样写了
2.指定task路径。
一般的task脚本就在当前目录,但我们不会一起放置,那么我们如何告诉celery task脚本在哪里呢?
celery.autodiscover_tasks(packages=packages)
autodiscover_tasks 就是收集task的,packages则是包的列表如 ['app1.task.scripts','app2.task.scripts']
3.配置
celery.conf.update(concurrency=20, force_execv=True, max_tasks_per_child=10)
这里update 可以是其他选项。
如:
a. 自定义调度。可以实现动态添加定时任务等功能
celery.conf.beat_scheduler = config['celery']['BEAT_SCHEDULER']
b. 结果存储。方便业务查询,状态查看,没有太大意义
celery.conf.result_backend = config['celery']['BEAT_RESULT']
当然还有其他配置,可以依照官网的配置,再以上方式即可配置好。
4. task 脚本编写
@celery.task
def add(x,y):
return x+y
5.启动脚本
app = celery
就是这样可以高度自定义的celery遇见同样的flask. 他们之间还需第三者来转换么,很多人老是说flask 只能在celery3.x版本用。还有人用django时也同样出现这样的问题。
因为他们都用了第三者。
----- 似乎没有说到flask(好吧,我不准备介绍在flask中如何调用task了)