码迷,mamicode.com
首页 > 其他好文 > 详细

平台项目 ~ celery 异步之异步处理功能

时间:2019-09-12 12:54:01      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:level   平台   def   reg   任务   ble   utc   worker   处理   

一 简介:今天来聊聊celery两大功能之一的异步处理

二  标准流程: 

    1 建立 config 文件
           class Config:
             ENABLE_UTC = False
             CELERY_RESULT_BACKEND = ‘redis://127.0.0.1:6379/5‘
             BROKER_URL = ‘redis://127.0.0.1:6379/6‘
            注意 1 所有参数都必须大写,并且为固定value
            2 队列和结果集本文都将采用redis,命名两个不同的库就行
    2 建立 celery文件
           app = Celery(‘test1‘)
           app.config_from_object(Config)
           app.autodiscover_tasks([‘celery_demo‘])
   3 建立tasks文件
        @ app.task #装饰器 这里也可以采用 @shared_task
        def a():
          return "ok" 返回值
   4 启动多worker
       1 这里要注意 输出结果确保task发现.不然是无法调用的
          类似格式 .tasks.function
      2 在celery项目同等级目录执行相关命令
         celery -A celery_demo.celery worker --loglevel=info -P eventlet  -f  log.name
    5 调用方式  
        result=a.delay()
       1 调用delay延迟函数
       2 result.ready() True代表任务完成 False代表未完成
          result.status
          PENDING,表示没有执行

三 错误解决办法     

   错误1 Received unregistered task of type ‘mysql_web.celery_demo.tasks.mail‘.
   可能原因
    1 如果task有被注册的话 填写 @app.task(name=‘提示的任务名‘)
    2 如果task没有被注册的话,这种情况发生在引入绝对路径的第三方包,可以暂时将文件拷贝一份

四 总结

     1 以上是一个融入drf框架的标准celery异步调用

     

平台项目 ~ celery 异步之异步处理功能

标签:level   平台   def   reg   任务   ble   utc   worker   处理   

原文地址:https://www.cnblogs.com/danhuangpai/p/11511029.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!