celery介绍 (异步任务、定时任务)

celery介绍

异步任务


  • Celery 是一个强大的分布式任务队列,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行。我们通常使用它来实现异步任务( async task )和定时任务( crontab )。 异步任务比如是发送邮件、或者文件上传, 图像处理等等一些比较耗时的操作 ,定时任务是需要在特定时间执行的任务。它的架构组成如下图

    1. Install the django-celery-results library:
      $ pip install django-celery-results
  • 2.安装celery
    $ pip install django-celery-results

  • 3.创建celery主文件
    from future import absolute_import, unicode_literals
    `import os
    from celery import Celery, platforms
    os.environ.setdefault(‘DJANGO_SETTINGS_MODULE’, ‘website.settings’) app = Celery(‘website’)
    app.config_from_object(‘django.conf:settings’, namespace=‘CELERY’) # Load task modules from all registered Django app configs. app.autodiscover_tasks() # 允许root 用户运行celery platforms.C_FORCE_ROOT = True @app.task(bind=True) def debug_task(self):     print(‘Request: {0!r}’.format(self.request))

  • 4.init.py 增加以下内容
    from future import absolute_import # This will make sure the app is always imported when # Django starts so that shared_task will use this app. from .celery import app as celery_app all = [‘celery_app’]

  • 5.创建tasks.py
    from future import absolute_import from celery import shared_task @shared_task def add(x, y):
    return x + y

  • 6.view.py 中引用该tasks异步处理
    from deploy.tasks import add
    def post(request):
    result = add.delay(2, 3)

  • 7.启动celery
    celery -A website worker -l info

定时任务

  • 1.celery.py文件添加如下配置以支持定时任务crontab
    from celery.schedules import crontab
    app.conf.update(
    ` CELERYBEAT_SCHEDULE = {      
     ‘sum-task’: {         
      ‘task’: ‘deploy.tasks.add’,         
      ‘schedule’:  timedelta(seconds=20),          
     ‘args’: (5, 6)       
    }
          ‘send-report’: {
             ‘task’: ‘deploy.tasks.report’,              ‘schedule’: crontab(hour=4, minute=30, day_of_week=1),         }     } )
  • 定义了两个task:
    • 名字为’sum-task’的task,每20秒执行一次add函数,并传了两个参数5和6
    • 名字为’send-report’的task,每周一早上4:30执行report函数
    • tasks.py 中添加方法
      @shared_task def report():     return 5
    • 启动
    • celery -A website beat -l info
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值