django celery redis简单测试

希望在下一版中,能用这个小芹菜,来实现异步的多任务并行哈。

安装REDIS之类的不表,只说在DJANGO当中要注意配置的事项。

0,安装插件

yum install redis-server
pip install celery
pip install celery-with-redis
pip install django-celery

 

1,settings.py当中的配置:

import djcelery
djcelery.setup_loader()

BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

 

2,celery.py当中的配置(实际应用时,注意PROJECT和APP的变通配置)

from __future__ import absolute_import

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

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

app = Celery('celerytest')

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))

 

3,__init__.py当中的配置

from __future__ import absolute_import

from .celery import app as celery_app

 

4,tasks.py当中的配置

from celerytest import celery_app
from celery import shared_task
from time import sleep

@celery_app.task()
def UploadTask(message):

    UploadTask.update_state(state='PROGRESS', meta={'progress': 0})
    sleep(30)
    UploadTask.update_state(state='PROGRESS', meta={'progress': 30})
    sleep(30)
    return message

def get_task_status(task_id):

    task = UploadTask.AsyncResult(task_id)

    status = task.state
    progress = 0

    if status == u'SUCCESS':
        progress = 100
    elif status == u'FAILURE':
        progress = 0
    elif status == 'PROGRESS':
        progress = task.info['progress']

    return {'status': status, 'progress': progress}

@celery_app.task
def add(x, y):
    return x + y

def mul(x, y):
    return x * y

 

5,测试代码

>>> from app.tasks import *
>>> t = UploadTask.delay("heel")
>>> get_task_status(t.id)
{'status': u'PROGRESS', 'progress': 0}
>>> get_task_status(t.id)
{'status': u'PROGRESS', 'progress': 0}
>>> get_task_status(t.id)
{'status': u'PROGRESS', 'progress': 30}
>>> get_task_status(t.id)
{'status': u'PROGRESS', 'progress': 30}
>>> get_task_status(t.id)
{'status': u'SUCCESS', 'progress': 100}
>>> add.delay(3245, 35)
<AsyncResult: 6b45b2d6-2343-4d42-9810-e72d6c936a01>

 

6,启动worker(同样注意运行时的帐号,运行时当前目录,PROJ的名称及参数,在后期或是生产环境时,DAEMON的配置)

 celery worker -A celerytest -l info

 

7,输出截图

时间: 2024-11-30 11:29:25

django celery redis简单测试的相关文章

PHP 使用redis简单示例分享

 这篇文章主要介绍了PHP 使用redis简单示例分享,主要是给大家展示下,php使用redis的方法,有需要的小伙伴们参考下.     示例很简单,注释里也都做了说明,这里就不多废话了.   代码如下: <?php /*从平台获取数据库名*/ $dbname = ""; /*从环境变量里取host,port,user,pwd*/ $host = ''; $port = ''; $user = ''; $pwd = ''; try { /*建立连接后,在进行集合操作前,需要先进行

smarty简单测试例子

smarty简单测试例子      <?phprequire 'smarty/libs/Smarty.class.php';$smarty = new Smarty;$smarty->template_dir="smarty/templates/templates";$smarty->compile_dir="smarty/templates/templates_c";$smarty->config_dir="smarty/temp

AJAX简单测试代码实例_AJAX相关

本文实例讲述了AJAX简单测试代码.分享给大家供大家参考.具体如下: 客户端:代码如下:(AJAX_test.html ) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/x

mysql convert函数性能简单测试

得到了这样一个需求,需要按照拼音字母排序,而mysql数据库使用的是utf编码. 如果使用gbk的话,排序规则是按拼音的. 而mysql中convert函数,可以对数据进行转换. 我们对这个convert进行了简单的性能测试,下面介绍一下测试过程,以及测试结果,如有问题,请各位指出. 软硬件环境 硬件配置:2核CPU.2G内存 数据库:Mysql 5.5 表结构 1 2 3 4 5 CREATE TABLE `test_gbk` ( `id` int(11) NOT NULL AUTO_INCR

java-求:junit的简单测试案例

问题描述 求:junit的简单测试案例 哪位大神能给我一个junit的简单测试案例,新手,初次使用junit4,谢谢. 最好是带参数的. 解决方案 1:引入junit包: 2:@Test public void test(){ //写入要执行的方法 } 此时不需要main方法,该方法体也可以执行. 解决方案二: 网上搜索一下会有一大堆

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试 系列目录 我想测试EF在一百万条数据下的显示时间!这分数据应该有很多同学想要,看看EF的性能! 服务器 现在来向SQL2008R2插入1000000条数据吧 declare @i int; set @i=0; while @i<1000000 begin INSERT INTO [AppDB].[dbo].[MIS_Article] ([Id] ,

简单测试Apache是如何完成负载均衡策略配置_Linux

随着访问量的不断提升,以及对响应速度要求的苛刻,进行负载均衡设置就显得尤为重要了.公司的系统在最初设计的时候就已经考虑到了负载均衡的规划,www静态服务器配置了两台,由于初期项目时间紧,并且访问量并不高,所以当时只用了一台,另一台在内网中,只是进行了同步,并为发挥出效用来.此次就是对负载均衡的一个简单测试. 先介绍一下apache mod_proxy_balancer的几个配置规则: 将Apache作为LoadBalance前置机分别有三种不同的部署方式,分别是: 1 )轮询均衡策略的配置 进入

JS简单测试循环运行时间的方法_javascript技巧

本文实例讲述了JS简单测试循环运行时间的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <title>JS 测试循环运行的时间</title> <script> var arr = []; var max = 10000000; //加载 window.addE

java-JavaScript的一个简单测试,为什么会出这个结果?

问题描述 JavaScript的一个简单测试,为什么会出这个结果? a的字面值和类型都和b相同,就输出"两者一样",但为什么它输出了"两者不一样"呢? 解决方案 因为你是typeof a 和 b比较,而不是 typeof a === typeof b 或者 a === b 解决方案二: 你去掉typeof直接判断的话,就是一样的了.