flask 与celery

在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了)






posted @ 2019-10-14 15:45  apuyuseng  阅读(460)  评论(0编辑  收藏  举报