首页 > 其他分享 >Django中celery的使用(非常简单的用法)

Django中celery的使用(非常简单的用法)

时间:2024-09-05 11:02:46浏览次数:12  
标签:TestCelery task redis Django celery 非常简单 import id

1、

https://www.cnblogs.com/hard-working-Bert/p/14236125.html

这里主要展示一个最简单的django中的celery任务,为了让大家都可以用上celery。话不多说,首先给大家看一下我的目录

   这里的TestCelery是我的项目名称,CeleryTask是app名称。

 

windows启动redis服务及修改配置文件:

修改redis的conf文件,

 然后开cmd窗口启动redis,

 

 

这个项目安装的环境:(感觉有几个没用到,反正先装上) 

(1) Python == 3.5.2    (2) Django == 2.1.15      (3) Celery == 3.1.26.post2    (4) Django-Celery == 3.2.2  (5) Django-redis ==  4.10.0   (6) redis == 2.10.6

我这里用到的中间人Broker是redis,所以就安装了redis相关的包。接下去就是操作步骤。

----------------------------------------------------------------------------------------------------------------------------------

Step1:修改settings.py,在最后加上这两句。(看了网上很多教程,要加INSTALL APP, 以及一堆配置。但后来我一个个删掉,发现最后剩这两个就可以运行最简单的Celery了)

BROKER_URL = 'redis://127.0.0.1:6379/14'  # 任务容器地址,redis数据库地址
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/15'  # 任务结束的地址

Step2:在TestCelery下新建一个celery.py

复制代码
import os
from celery import Celery
from django.conf import settings

# 设置celery的环境变量和django-celery的工作目录
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "TestCelery.settings")
# 实例化celery应用,传入服务器名称
app = Celery("TestCelery")
# 加载celery配置
app.config_from_object("django.conf:settings")

# 如果在项目中,创建了task.py,那么celery就会沿着app去查找task.py来生成任务
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
复制代码

Step3:在TestCelery下的__init__.py

from .celery import app as celery_app
__all__ = ['celery_app']

Step4:在CeleryTask下新建tasks.py

复制代码
from __future__ import absolute_import, unicode_literals

import time

from celery import shared_task

@shared_task
def adds():
    for i in range(0, 10):
        print(i)
        time.sleep(1)
    return 'finish'
复制代码

Step5:在TestCelery下的views.py

复制代码
from django.http import JsonResponse, HttpResponse
from CeleryTask import tasks
from celery.result import AsyncResult


# Create your views here.

def index(request):
    """ 进入这个url的时候就触发异步任务,并在session中记录task_id """
    res = tasks.adds.delay()
    request.session['task_id'] = res.task_id
    return JsonResponse({'status': 'successful', 'task_id': res.task_id})


def dasd(request):
    """ 进入url就会去获取session中的task_id,并检测任务. 若任务还在进行就显示页面还在加载,若进行完成就显示hahaha """
    task_id = request.session.get('task_id')
    if task_id and AsyncResult(task_id).state == 'PENDING':  # 加载时的状态为PENDING
        return HttpResponse('页面正在加载...')
    return HttpResponse('hahaha')
复制代码

Step6:在TestCelery下的urls.py

复制代码
from django.conf.urls import url
from django.contrib import admin
from TestCelery import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),
    url(r'^dasd/', views.dasd),
]
复制代码

代码部分结束

---------------------------------------------------------------------------------------------------------------------------------------------------------

开启程序部分:

Step1:开启本地的redis(这里就不介绍如何安装redis和开启redis了)

Step2:开启django项目

Step3:在Terminal中输入     celery worker -A TestCelery -l INFO

测试为:

终端里显示的界面如下:

     

********************

 

 

 有celery ready这样的字出现,就表示celery已经开启。

Step4:在浏览器中输入,查看第一个页面,并触发celery任务。

http://127.0.0.1:8000/index/

此时返回终端可以查看celery的运行过程

 

 

 上面这样就是运行了adds的任务了

Step5:在浏览器中输入,查看第二个页面。若在第一个任务没有完成的情况下到第二个页面可以看到一个异步的效果。

http://127.0.0.1:8000/dasd/

在任务没完成的情况下显示:

 

多次刷新页面,至任务完成后显示:

 

----------------------------------------------------------------------------------------------------------------------------------------

                这就是一个简单的django中运用celery的例子了!

 

 

 

 

 

 

 

 

 

 

 

 

 

2、

标签:TestCelery,task,redis,Django,celery,非常简单,import,id
From: https://www.cnblogs.com/yaok430/p/18397984

相关文章

  • 【Django开发】前后端分离django美多商城项目第9篇:收货地址,1. 展示收货地址界面【附
    本教程的知识点为:项目准备项目准备配置1.修改settings/dev.py文件中的路径信息2.INSTALLED_APPS3.数据库用户部分图片1.后端接口设计:视图原型2.具体视图实现用户部分使用Celery完成发送判断帐号是否存在1.判断用户名是否存在后端接口设计:用户部分JWT什......
  • django空巢老人志愿服务系统-计算机毕业设计源码58726
    摘 要随着社会老龄化问题日益突出,空巢老人群体的关注和关怀日益重要。本研究设计并实现了基于Python的空巢老人志愿服务系统,旨在利用技术手段提供更多关爱和支持给空巢老人群体。该系统结合Python编程语言的灵活性和易用性,实现了慈善捐赠、医院信息查询、志愿活动发布、志......
  • 非常简单申请通配符证书
    从头开始安装Certbot并申请通配符证书的步骤如下:###1.更新系统包并安装Certbot根据您的操作系统,首先更新系统包,然后安装Certbot。####对于Ubuntu/Debian:```bashsudoaptupdatesudoaptinstallcertbot```####对于CentOS/RHEL:首先启用EPEL仓库:```bashsudoyum......
  • 非常简单申请证书方案
    要从头开始安装Certbot并使用`certbotcertonly--standalone`申请证书,您可以按照以下步骤进行操作:###1.安装Certbot首先,根据您的操作系统来安装Certbot。以下是一些常见的操作系统的安装步骤:####对于Ubuntu/Debian:```bashsudoaptupdatesudoaptinstallcertbot```......
  • django前后端不分离项目中ajax与csrf问题,加入这个js文件(亲测有效)
    functiongetCookie(name){letcookieValue=null;if(document.cookie&&document.cookie!==''){constcookies=document.cookie.split(';');for(leti=0;i<cookies.length;i++){constcookie=cookies[i].trim();//......
  • django Form组件校验流程
    django中Form组件字段校验顺序:先字段内部校验,然后钩子方法校验:fromdjango.shortcutsimportrender,redirectfromdjango.core.validatorsimportRegexValidatorfromdjangoimportformsfromapp01.utilss.mdyimportmdfromapp01.modelsimportAdministrator,Custom......
  • 第二章 快速上手Django框架
    1.终端安装pipinstalldjango==3.2C:\Python39 -python.exe -Scripts -pip.exe -django-admin.exe -Lib -re.py -random.py -site-pakages -django==3.2 ...2.命令行创建项目cd指定目录django-adminstartproject项目名mysite......
  • 第一章 Django基础与虚拟环境
    1.Web框架和Django框架1.1网络通信注意:局域网个人一般写程序,想要让别人访问:阿里云、腾讯云。去云平台租服务器(含公网IP)程序放在云服务器让网络中可以互相通信的双发收发数据。服务端【我的电脑】importsocket#1.监听本机的IP和端口sock=socket.socket(socke......
  • 基于django+vue药店销售管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着医疗行业的快速发展和人们对健康意识的日益增强,药店作为药品流通的重要环节,其管理效率与服务质量直接关系到民众的健康保障与用药安全......
  • 基于django+vue药店管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着医药行业的快速发展与消费者健康意识的日益增强,药店作为药品销售与服务的重要窗口,其管理效率与服务质量直接影响到顾客的满意度及企业......