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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- SpringBoot与异步任务、定时任务、邮件任务
- laravel异步任务调用
- js异步从入门到放弃(四)- Generator 封装异步任务
- 在 WorkManager 中处理异步任务
- 理解JavaScript概念系列--异步任务
- Django - Celery异步任务队列
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
网络、群体与市场
大卫·伊斯利(David Esley)、乔恩·克莱因伯格(Jon Kleinberg) / 李晓明、王卫红、杨韫利 / 清华大学出版社 / 2011-10-1 / CNY 69.00
过去十年来,现代社会中复杂的连通性向公众展现出与日俱增的魅力。这种连通性在许多方面都有体现并发挥着强大的作用,包括互联网的快速成长、全球通信的便捷,以及新闻与信息(及传染病与金融危机)以惊人的速度与强度传播的能力。这种现象涉及网络、动机和人们的聚合行为。网络将人们的行为联系起来,使得每个人的决定可能对他人产生微妙的后果。 本书是本科生的入门教材,同时也适合希望进入相关领域的高层次读者。它从交......一起来看看 《网络、群体与市场》 这本书的介绍吧!