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

环境

windows环境下载安装redis-server

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

14459419-fcbacddc19601e6b.png
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
如下图所示:


14459419-7305bd8ce5b9ec91.png
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)

终端可查看到:


14459419-964ee5bb8f0cbcff.png
image.png

猜你喜欢

转载自blog.csdn.net/weixin_34247032/article/details/86860033
今日推荐