Django中的celery异步任务

Django中使用celery创建异步队列

  • 创建celery任务
    1. 安装celery
    pip install celery -- 如果报错(没有权限,就需要加上 sudo;如果对版本有需求,celery==“版本号”即可)
    2. 创建文件路径
    官方文档的创建 http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html
    因为我结合的时Django框架,所以就说一下django中的创建
    django的启动目录中创建一个celery_tasks包,celery_tasks中创建main.py
    1.如果存在一两个异步任务,个人推荐直接在main.py中添加任务,避免发生不必要的错误.celery/main.py
    2.如果存在很多异步任务,就使用多层文件夹实现。例如 celery_tasks/demo1/tasks.py;celery_tasks/demo2/tasks.py
  • 对象和配置代码实现
    - 创建对象 app = celery.Celery("") – 参数有很多,常用的 “name”, broker
    - name是对象的名字,broker是用来保存队列任务的(常用redis,rabbitmq)
    # coding=utf8
    import celery
    app = celery.Celery("demo", broker="redis://127.0.0.1:6379/1")
    
    # 导入配置
    celery_app.config_from_object('celery_tasks.config')
    
    # 导入任务(此方式是在很多异步任务的情况下使用)
    celery_app.autodiscover_tasks(['celery_tasks.sms', 'celery_tasks.email'])
    
    说明: 链接redis的方式:redis://127.0.0.1:6379/1 其中1是redis中16个库中的一个
  • 任务的添加
    @app.task(name="index")
    def index(data):
        pass
    
  • celery的开启
    • 用到的只有一个 ----- celery worker -A proj -l info
      这条命令存在很多坑。 1.这条命令在什么路径下运行? 2.这条命令中的proj是什么?
      解决:
    1. 命令必须在django的启动文件目录下运行
    2. proj 指的是main.py,但是完整的路径应该是 celery worker -A celery_tasks.main -l info
    3. -l info 是日志输出
      注意: 运行之后,有神奇的地方是main.py可以运行,但是出现无法导入包的情况(Import Error:)。
      这点真的是,一定要注意文件路径的导入问题。如果发现所有的包导入并没有曲线报错,那就重新写一个,把之前的删除掉,可能就神奇的好了。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值