Django配置celery定时任务

安装celery

  • 使用redis+celery的方式(使用的是阿里源,也可以选择不用)
    pip install -i https://mirrors.aliyun.com/pypi/simple/ -U "celery[redis]"
    

修改Django的settings配置文件

  • 添加celery文件
    在app同级目录下添加一个文件夹,例:service_celery
    在文件夹中添加celery.py文件,内容如下:

    #!/usr/bin/env python
    from __future__ import absolute_import, unicode_literals
    import os
    from celery import Celery
    
    # set the default Django settings module for the 'celery' program.
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')
    
    app = Celery('bank_service')
    
    # Using a string here means the worker doesn't have to serialize
    # the configuration object to child processes.
    # - namespace='CELERY' means all celery-related configuration keys
    #   should have a `CELERY_` prefix.
    app.config_from_object('django.conf:settings', namespace='CELERY')
    
    # Load task modules from all registered Django app configs.
    app.autodiscover_tasks()
    
    @app.task(bind=True)
    def debug_task(self):
        print('Request: {0!r}'.format(self.request))
    
    
  • 配置settings文件,在settings.py中添加:

    # import djcelery
    # djcelery.setup_loader()
    
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://127.0.0.1:6379/1",
            "OPTIONS": {
               "CLIENT_CLASS": "django_redis.client.DefaultClient",
            }
        }
    }
    
    REDIS_URL = CACHES['default']['LOCATION']
    CELERY_BROKER_URL = REDIS_URL
    BROKER_URL = REDIS_URL
    

使用celery任务

  • 创建异步任务
    在app同级目录下添加一个文件夹,例:service_tasks
    在文件夹中添加tasks.py文件,内容如下:

    from service_celery.celery import app
    import time
    @app.task(bind=True)
    def add_num(self, a, b):
        time.sleep(1)
        c = a+b
        print(c)
    
  • 调用异步任务

    from service_tasks.tasks import add_num
    a, b = 1, 2
    add_num.delay(a, b)
    print("success")
    

启动celery

  • 启动

    # ../venv_bank/bin/celery是我本地celery的路径,也可以直接使用celery
    # worker后的都是一些配置方面的,也可以去掉
    ../venv_bank/bin/celery -A bank_service worker --loglevel=info  --max-tasks-per-child 500 --autoscale=8,4
    

本文链接:时光不写博客-Django配置celery定时任务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光不写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值