专栏名称: Python之美
《Python web开发实战》作者的公众号。发现Python之美,主要包含Web开发、Python进阶、架构设计、Python开发招聘信息等方面内容
目录
相关文章推荐
Python爱好者社区  ·  月薪3万35岁脑干出血程序员:ICU躺了28 ... ·  昨天  
Python爱好者社区  ·  务必立即拿下软考证(政策红利) ·  2 天前  
Python爱好者社区  ·  软考,yyds ·  昨天  
Python爱好者社区  ·  Science披露:近3年,垃圾论文激增,9 ... ·  2 天前  
51好读  ›  专栏  ›  Python之美

wechat-admin:Celery使用篇

Python之美  · 公众号  · Python  · 2017-08-15 19:30

正文

请到「今天看啥」查看全文


cat celery . py

  • from celery import Celery

  • from celery . signals import worker_ready

  • from models . redis import db , LISTENER_TASK_KEY

  • app = Celery ( 'wechat' , include =[ 'wechat.tasks' ])

  • app . config_from_object ( 'wechat.celeryconfig' )

  • @worker_ready . connect

  • def at_start ( sender , ** k ):

  • with sender . app . connection () as conn : # noqa

  • task_id = sender . app . send_task ( 'wechat.tasks.listener' )

  • db . set ( LISTENER_TASK_KEY , task_id )

  • if __name__ == '__main__' :

  • app . start ()

  • 这段代码有2点需要解释一下:

    1. 调用send_task会返回任务id,存在LISTENER_TASK_KEY里面用于未来重启时直接通过这个任务id

    2. 使用了Celery的信号系统,listener这个异步任务需要在worker启动之后就运行,使用worker_ready这个信号就可以。

    tasks.py

    tasks.py这个文件包含了很多业务逻辑,为了演示我省略部分代码。不过代码还是很长,所以我直接在对应行数的代码上加注释来解释了:







    请到「今天看啥」查看全文