Windows上使用Django搭配Celery执行耗时任务

Celery官方文档

1、内容含义

任务task 本质是一个python函数,将耗时操作封装成一个函数
队列queue 将要执行的任务放队列里
工人worker  负责执行对了中的任务
代理broker  负责调度,在部署环境中使用redis

2、安装需要的包

pip  install  celery
pip  install  celery-with-redis
pip  install  django-celery

3、配置settings

3.1添加appps

djcelery

3.2初始化

import djcelery
djcelery.setup_loader()#初始化
BROKER_URL='redis://:sunck@127.0.0.1:6379/0'
CELERY_IMPORTS=('myApp.task')

4、创建task

from celery import task
import time

@task
def sunck():
    print("sunck is a good man")
    time.sleep(5)
    print("sunck is a nice man")

5、执行数据库迁移

python  manage.py  migrate

6、根目录下写celery

from __future__ import absolute_import

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

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'whthas_home.settings')

app = Celery('portal')

app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)


@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

7、根目录下的__init__添加

from .celery import app as celery_app

如果用的是pymysql,还需要
import pymysql
pymysql.install_as_MySQLdb()

8、视图函数执行耗时操作时候的写法

from .task import sunck
def celery(request):
    sunck.delay()#添加到celery中执行,不会阻塞
    return render(request, 'myApp/celery.html')

9、启动redis

redis-server.exe

10、启动服务

python  manage.py  runserver

11、启动worker

python  manage.py  celery  worker  --loglevel=info
更新时间:2017-10-13 16:06:22

本文由 智慧煮粥 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
原文链接:http://zz.zzhub.cn/archives/djangocelery
最后更新:2017-10-13 16:06:22

评论

Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×