django1.11.21 djcelery3.3定时异步任务

栏目: Python · 发布时间: 5年前

celery==3.1.26

Django==1.11.21

django-celery==3.3.0

flower==0.9.3

kombu==3.0.37

redis==2.10.6

创建项目

django-admin.py startproject celery_test

创建app

python manange.py startapp kecelety

在app中创建tasks.py

celery_test]# cat kecelety/tasks.py

#!/usr/bin/env python

#coding:utf-8

import django

django.setup()

from celery import task, platforms

import time

# 允许root 用户运行celery

platforms.C_FORCE_ROOT = True

@task

def say_hello():

#主要是为了测试异步功能,让他休眠5秒再打印,这样就避免打印和views.py中的返回同时执行,

#其实是异步执行,为了肉眼效果就加上休眠

time.sleep(5)  

print "say_hello()..."

return 0

@task

def add(x,y):

print(x,y)

return x+y

@task

def test(arg1, *arg2, **arg3):

print(arg1, arg2, arg3)

return 0

添加异步队列

celery_test]# cat kecelety/views.py

# -*- coding: utf-8 -*-

from __future__ import unicode_literals

from django.shortcuts import render

# Create your views here.

from django.http import HttpResponse

from .tasks import say_hello

import json

def hello(request):

#添加到消息队列中

r = say_hello.delay()

#执行成功返回True

print r.ready()

print r.successful()

return HttpResponse(json.dumps({'data':'ddd'}))

urls.py

from kecelety.views import *

urlpatterns = [

...

url(r'^c/hello/', hello),

]

setting.py配置

INSTALLED_APPS = [

...

'djcelery',

'kecelety',

'kombu.transport.django', #配合下面的BROKER_URL使用

]

最后添加

import djcelery

djcelery.setup_loader()

CELERY_TIMEZONE = 'Asia/Shanghai'

#息队列界面UI中可以看到

BROKER_URL = 'redis://127.0.0.1:6379/0' #设置 redis 为celery代理

#设置django为celery代理,此时任务消息存储在数据库中,在admin中注册即可在后台看到

#admin.py:

#from kombu.transport.django import models as kombu_models

#admin.site.register(kombu_models)

#BROKER_URL = 'django://' 

CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' #定时任务用到

CELERYD_MAX_TASKS_PER_CHILD = 3 #  每个worker最多执行3个任务就会被销毁,可防止内存泄露

开启服务

python manage.py celery worker -c 4 --loglevel=info

python manage.py runserver 0.0.0.0:9004

python manage.py celery flower

python manage.py celery beat

可以在admin上添加定时任务,也可以从网

已知错误

https://www.jianshu.com/p/b95bf142dc1b

django celery运行报错 TypeError: can only concatenate list (not "tuple") to list

\lib\site-packages\djcelery\management\commands\celery.py

14     #    options = (CeleryCommand.options +

15     #           base.get_options() +

16     #           base.preload_options)

https://www.cnblogs.com/cpl9412290130/p/10597291.html

celery:Unrecoverable error: AttributeError("'unicode' object has no attribute 'iteritems')

pip uninstall redis

pip install redis==2.10.6


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

互联网思维独孤九剑

互联网思维独孤九剑

赵大伟 / 机械工业出版社 / 2014-3-20 / 49

《互联网思维独孤九剑》是国内第一部系统阐述互联网思维的著作,用9大互联网思维:用户思维、简约思维、极致思维、迭代思维、流量思维、社会化思维、大数据思维、平台思维、跨界思维,以专业的视角全方位解读移动互联网给传统产业带来的变革,涉及战略规划、商业模式设计、品牌建设、产品研发、营销推广、组织转型、文化变革等企业经营价值链条的各个方面。这是一部传统企业互联网转型必读的“孙子兵法”,帮助我们开启对新商业文......一起来看看 《互联网思维独孤九剑》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

MD5 加密
MD5 加密

MD5 加密工具