美文网首页
异步请求处理:django+celery+redis(windo

异步请求处理:django+celery+redis(windo

作者: LittleJessy | 来源:发表于2019-01-29 17:53 被阅读0次

环境

windows环境下载安装redis-server

官网
我下载的是Redis-x64-2.8.2401
命令行切换到Redis-x64-2.8.2401目录下,执行命令:redis-server.exe redis.windows.conf --maxheap 1gb
如下图所示:

image.png
pip install redis

安装celery

pip install celery
python3 manage.py makemigrations
python3 manage.py migrate
切换到项目目录下执行:python3 manage.py celery -A celery worker --loglevel=info
如下图所示:


image.png

启动项目

python3 manage.py runserver 0.0.0.0:8081

celery配置

  1. 项目的settings.py文件修改:
# celery 设置
# celery中间人 redis://redis服务所在的ip地址:端口/数据库号
BROKER_URL = 'redis://127.0.0.1:6379/0'
# celery结果返回,可用于跟踪结果
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'

# celery内容等消息的格式设置
CELERY_ACCEPT_CONTENT = ['application/json', ]
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

# celery时区设置,使用settings中TIME_ZONE同样的时区
CELERY_TIMEZONE = TIME_ZONE
  1. 项目文件夹下添加celery.py文件:
# coding:utf-8
from __future__ import absolute_import, unicode_literals

from celery import Celery
from django.conf import settings
import os

# 获取当前文件夹名,即为该Django的项目名
project_name = os.path.split(os.path.abspath('.'))[-1]
project_settings = '%s.settings' % project_name

# 设置环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', project_settings)

# 实例化Celery
app = Celery(project_name)

# 使用django的settings文件配置celery
app.config_from_object('django.conf:settings')

# Celery加载所有注册的应用
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
  1. 项目的init.py文件修改:
# 引入celery实例对象
from QAPlatform.celery import app as celery_app

创建异步任务

  1. 在需要创建异步任务的app下新建task.py文件
from celery import task

#如下举例
@task
def test(n):
    for i in range(0,n):
        time.sleep(2)
        print(i)
  1. 此时需要重新在项目下执行:python3 manage.py celery -A celery worker --loglevel=info
  2. 在该app下的views.py文件中执行上面的异步任务
from appname.tasks import test

# UI自动化页面
@login_Check
def my_test(request):
    test.delay(100)

终端可查看到:


image.png

相关文章

  • 异步请求处理:django+celery+redis(windo

    环境 windows环境下载安装redis-server 官网我下载的是Redis-x64-2.8.2401命令行...

  • IntentService和HandlerThread

    IntentService 概述 处理异步请求的Service 客户端使用startService()发送异步请求...

  • 异步

    异步 异步请求 同步请求:同一个请求由一个线程从头到尾进行处理 一步到位 异步请求:同一个请求中由多个线程进行处理...

  • 异步请求处理

    经常会有小伙伴问异步的问题,异步处理方案有很多,我来说一下我常用的。 背景:我们需要上传图片到oss,拿到oss返...

  • 使用Django+Celery+Redis实现异步发送邮件

    使用django+celery+redis实现异步发送邮件 一、首先在django项目的settings添加一下的...

  • Antd Pro 与后端交互的几种场景(持更)

    Antd Pro如何处理异步请求? Antd Pro的异步请求用的是Dva,而Dva的异步又是在fetch的基础上...

  • Web异步处理请求

    1.场景描述 在做项目的时候,有这样一个场景,以下是简化版描述:浏览器A发起http请求到服务器,但响应数据却需要...

  • DeferredResult——异步请求处理

    本文地址: https://www.jianshu.com/p/062c2c6e21da 传送门 实例源码地址: ...

  • 异步处理restful请求

    一、起因 众所周知,toncat线程数量有限,在接收到http请求的时候,为了提高系统的吞吐量,很多时候我们都会选...

  • SpringBoot 异步处理请求

    背景 在 Servlet 3.0 中提供了在处理 servlet 或 filter 时可以在任何潜在阻塞的地方,进...

网友评论

      本文标题:异步请求处理:django+celery+redis(windo

      本文链接:https://www.haomeiwen.com/subject/amoxsqtx.html