zoukankan      html  css  js  c++  java
  • django中celery的使用

    1.什么是celery
    celery是一个异步任务框架,当我们的程序中存在一个比较耗时的操作时,可以启动这个异步任务框架,
    将耗时操作,交给它来完成,这样节省了程序的执行时间。

    2.celery的原理
    celery开启时,可以指定多个工作进程,并发进行工作。我们需要指定一个消息队列,来存放待执行的任务,任务执行结果。
    常见的消息队列有,RabbitMQ,Redis,Database,一般推荐RabbitMQ,Redis效率更高。

    3.同步请求,异步请求
    同步请求:所有逻辑在View中处理完毕后,返回response,在view处理任务时用户处于等待状态,直到页面返回结果。
    异步请求:View中先返回response,再在后台处理任务,用户无需等待,可以继续浏览网站,任务处理完成时,再告知用户。

    4.同步请求示例

    from django.shortcuts import render
    
    # Create your views here.
    from django.http import HttpResponse
    
    import time
    
    
    def send_mail(email):
        print("start send email to %s" % email)
        time.sleep(5)
        print("success")
        return True
    
    
    def home(request):
        send_mail("shijingjing07@126.com")
        return HttpResponse("end")
    

    运行程序,发现直到5秒以后才会出现响应:

    5.celery安装

    pip install django-celery
    

    6.redis安装
    windows下,下载redis,解压,里面有个redis-server.exe执行程序,点击开启redis服务

    7.异步请求示例
    1)在django工程的settings.py文件中添加如下代码:

    import djcelery
    djcelery.setup_loader()
    BROKER_URL = 'redis://localhost:6379/0'
    CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
    
    INSTALLED_APPS = {
    	......
    	'djcelery'
    }
    

    2)新建异步任务,在app目录下,新建tasks.py,代码如下:

    from celery import task
    import time
    
    
    @task
    def send_mail(email):
        print("start send email to %s" % email)
        time.sleep(5)
        print("success")
        return True
    

    3)修改views.py,代码如下:

    from django.http import HttpResponse
    
    import time
    from .tasks import send_mail
    
    
    def home(request):
        send_mail.delay("shijingjing07@126.com")
        return HttpResponse("end")
    

    4)开启celery,异步任务处理进程,进程会自动搜索项目下的task任务,加入处理列表

    python manage.py celery worker -c 4 --loglevel=info
    

    5)启动web程序

    python manage.py runserver
    

    运行结果如下,页面会立即响应:

    celery异步处理进程执行如下:

  • 相关阅读:
    曾经收藏过的好文,唯快不破
    思想上的差距,各种差距,看完再说
    GO的初始简书(一)简介安装
    php 使用composer
    微信开发~又来一拨(本人崇尚开源)
    PHP 底层的运行机制与原理 --转
    关于cgi、FastCGI、php-fpm、php-cgi
    winows 服务器环境搭建 (碰到了windows服务器,小记一下吧~)
    python方法的重写
    python继承简介
  • 原文地址:https://www.cnblogs.com/shijingjing07/p/9166052.html
Copyright © 2011-2022 走看看