博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django celery redis简单测试
阅读量:6338 次
发布时间:2019-06-22

本文共 2233 字,大约阅读时间需要 7 分钟。

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

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

0,安装插件

yum install redis-serverpip install celerypip install celery-with-redispip install django-celery

 

1,settings.py当中的配置:

复制代码
import djcelerydjcelery.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_importimport osfrom celery import Celeryfrom django.conf import settingsos.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_importfrom .celery import app as celery_app

 

4,tasks.py当中的配置

复制代码
from celerytest import celery_appfrom celery import shared_taskfrom 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 messagedef 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.taskdef add(x, y): return x + ydef 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)
复制代码

 

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

celery worker -A celerytest -l info

 

7,输出截图

转载地址:http://faooa.baihongyu.com/

你可能感兴趣的文章
7个神奇的jQuery 3D插件
查看>>
在线浏览PDF之PDF.JS (附demo)
查看>>
波形捕捉:(3)"捕捉设备"性能
查看>>
AliOS Things lorawanapp应用介绍
查看>>
美国人的网站推广方式千奇百怪
查看>>
java web学习-1
查看>>
用maven+springMVC创建一个项目
查看>>
linux设备驱动第四篇:以oops信息定位代码行为例谈驱动调试方法
查看>>
redis知识点整理
查看>>
Hello World
查看>>
Spring3全注解配置
查看>>
ThreadLocal真会内存泄露?
查看>>
低版本mybatis不能用PageHeper插件的时候用这个分页
查看>>
javaweb使用自定义id,快速编码与生成ID
查看>>
[leetcode] Add Two Numbers
查看>>
elasticsearch suggest 的几种使用-completion 的基本 使用
查看>>
04-【MongoDB入门教程】mongo命令行
查看>>
字符串与整数之间的转换
查看>>
断点传输HTTP和URL协议
查看>>
redis 数据类型详解 以及 redis适用场景场合
查看>>