环境
windows环境下载安装redis-server
官网
我下载的是Redis-x64-2.8.2401
命令行切换到Redis-x64-2.8.2401目录下,执行命令:redis-server.exe redis.windows.conf --maxheap 1gb
如下图所示:
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配置
- 项目的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
- 项目文件夹下添加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)
- 项目的init.py文件修改:
# 引入celery实例对象
from QAPlatform.celery import app as celery_app
创建异步任务
- 在需要创建异步任务的app下新建task.py文件
from celery import task
#如下举例
@task
def test(n):
for i in range(0,n):
time.sleep(2)
print(i)
- 此时需要重新在项目下执行:python3 manage.py celery -A celery worker --loglevel=info
- 在该app下的views.py文件中执行上面的异步任务
from appname.tasks import test
# UI自动化页面
@login_Check
def my_test(request):
test.delay(100)
终端可查看到:
image.png
网友评论