Celery(芹菜)安装配置过程

环境:win10 64;python 3.6.0;Django 2.0.3redis-3.2

开发工具:pycharm

  1. 安装包:celery,django-celery,celery-with-redis(使用redis作为消息代理(broker))
  2. 项目配置:

首先在"项目\settings.py"下加入celery配置:

# Celery settings
import djcelery
djcelery.setup_loader()
BROKER_URL = 'redis://127.0.0.1:6379/0'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
CELERY_TIMEZONE = 'Asia/Shanghai'
BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 3600}  # 1 hour.

其次在INSTALL_APPS里面加入celery配置

INSTALLED_APPS = [...'djcelery',
]

新建celery.py,将Django与Celery关联

from __future__ import absolute_importimport os
from celery import Celery
from django.conf import settingsos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ProjectName.settings')app = Celery('APPName')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. 配置应用:

在应用中新建tasks.py,代码如下:

from celery import task
from time import sleep, time

@task()
def Task_A(message):Task_A.update_state(state='PROGRESS', meta={'progress': 0})sleep(10)Task_A.update_state(state='PROGRESS', meta={'progress': 30})sleep(10)return messagedef get_task_status(task_id):task = Task_A.AsyncResult(task_id)status = task.stateprogress = 0if status == u'SUCCESS':progress = 100elif status == u'FAILURE':progress = 0elif status == 'PROGRESS':progress = task.info['progress']return {'status': status, 'progress': progress}@task
def sendmail(mail):print("++++++++++++++++++++++++++++++++++++")print('sending mail to %s...' % mail['to'])time.sleep(2.0)print('mail sent.')print("------------------------------------")return mail['to']

测试应用:

Django环境下运行celery

python manage.py celeryd -l info

 -------------- celery@mycomputer v3.1.26.post2 (Cipater)
---- **** -----
--- * ***  * -- Windows-10-10.0.15063-SP0
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app:         default:0x17b6c901240 (djcelery.loaders.DjangoLoader)
- ** ---------- .> transport:   redis://127.0.0.1:6379/0
- ** ---------- .> results:     redis://127.0.0.1:6379/0
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ----
--- ***** ----- [queues]-------------- .> celery           exchange=celery(direct) key=celery
[tasks]. DocCheck.tasks.Task_A. DocCheck.tasks.sendmail[2018-04-04 15:27:35,018: INFO/MainProcess] Connected to redis://127.0.0.1:6379/0
[2018-04-04 15:27:35,041: INFO/MainProcess] mingle: searching for neighbors
[2018-04-04 15:27:36,067: WARNING/MainProcess] C:\Python36\lib\site-packages\celery\app\contr
ol.py:36: DuplicateNodenameWarning: Received multiple replies from node name: celery@mycomputer
Please make sure you give each node a unique nodename using the `-n` option.pluralize(len(dupes), 'name'), ', '.join(sorted(dupes)),
[2018-04-04 15:27:36,070: INFO/MainProcess] mingle: all alone
[2018-04-04 15:27:36,128: WARNING/MainProcess] C:\Python36\lib\site-packages\djcelery\loaders
.py:133: UserWarning: Using settings.DEBUG leads to a memory leak, never use this setting in
production environments!warn('Using settings.DEBUG leads to a memory leak, never '
[2018-04-04 15:27:36,156: WARNING/MainProcess] celery@mycomputer ready.
[2018-04-04 15:27:36,233: INFO/Worker-1] child process 15852 calling self.run()
[2018-04-04 15:27:36,252: INFO/Worker-1] child process 20336 calling self.run()
[2018-04-04 15:27:36,283: INFO/Worker-1] child process 6920 calling self.run()
[2018-04-04 15:27:36,296: INFO/Worker-1] child process 19668 calling self.run()

成功启动后,在Django manage环境中测试任务执行情况

启动shell:python manage.py shell

>>> from APPName.tasks import *
>>> sendmail.delay(dict(to='aaa@163.com'))
<AsyncResult: 20a8c817-a6fe-434e-8bc4-5efdb5356046>

测试任务执行情况

>>> Task_A.delay("test")
<AsyncResult: c1c7c985-c0c4-48d6-9e21-b71ce87c3eb5>
>>> t = Task_A.delay("test1")
>>> t.ready()
False
>>> t.ready()
True

Broker显示结果如下:

[2018-04-04 15:30:59,903: INFO/MainProcess] Received task: DocCheck.tasks.Task_A[d7315376-5
cc4-4732-b1ea-ccfa513a0f54]
[2018-04-04 15:31:19,914: INFO/MainProcess] Task DocCheck.tasks.Task_A[d7315376-5cc4-4732-b
1ea-ccfa513a0f54] succeeded in 20.0s: test1
[2018-04-04 15:58:29,449: INFO/MainProcess] Received task: DocCheck.tasks.Task_A[39e903d1
-d9c1-4bab-96e4-1b7466538001]
[2018-04-04 15:58:49,673: INFO/MainProcess] Task DocCheck.tasks.Task_A[39e903d1-d9c1-4bab
-96e4-1b7466538001] succeeded in 20.156000000424683s: testget

Celery在Django下安装配置相关推荐

  1. django配置环境linux,linux环境下Django的安装配置详解

    linux环境下Django的安装配置详解 1. 下载安装Django pip install Django==1.6.5 测试是否安装成功 >>> import django> ...

  2. 怎么检查python是否安装成功-检查python以及django是否安装配置成功

    首先说明下,我使用pycharm作为开发的IDE,在第一次创建django项目的时候,会自动安装django包的.(网上也有很多单独安装的方法),环境变量配置成功后,就是用下面的方法检测安装成功与否. ...

  3. 在windows下安装配置Ulipad

    在windows下安装配置Ulipad 今天推荐一款轻便的文本编辑器Ulipad,用来写一些小的Python脚本非常方便. Ulipad下载地址: https://github.com/limodou ...

  4. Ubuntu下安装配置Open×××

    Ubuntu下安装配置Open××× 时间:2009-02-11 21:03来源:http://www.kklinux.com 作者:看看Linux 点击:2664次 1. 安装 Ubuntu中安装O ...

  5. PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程(转)

    转至:http://www.leapsoul.cn/?p=695 这两天刚装好Windows 7,碰巧前段时间有朋友问我Windows下如何安装搭建PHP环境,所以打算勤劳下,手动一步步搭建PHP环境 ...

  6. Linux服务器下安装配置Nginx的教程

    这篇文章主要介绍了Linux服务器下安装配置Nginx服务器的教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 Nginx("engine x")是一款 ...

  7. Linux 下安装配置C/C++开发环境 Code::Blocks

    Linux 下安装配置C开发环境Code::Blocks 一.提前的话 要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面 都会有C的编 ...

  8. centos6.4下安装配置JDK+TOMCAT+MYSQL笔记

    在公司测试环境,需要在CENTOS6.4下安装配置JDK+TOMCAT+MYSQL,下面是一个安装笔记留存备用. 一.系统环境和软件包 [root@localhost /]# uname -r 2.6 ...

  9. linux下安装配置redis服务

    2019独角兽企业重金招聘Python工程师标准>>> linux下安装配置redis服务 2016年03月25日 15:39:31 coding_everyday 阅读数:3530 ...

最新文章

  1. python数学表达式_Python入门笔记——(1)数字与表达式
  2. KVM中virtio-user工作思路(十二)
  3. jsp/servlet上传
  4. java listutils_Java的list自定义工具类ListUtils
  5. 网络操作系统 第四章 磁盘管理
  6. 虚拟专题:知识图谱 | 其他文章
  7. 《Windows脚本应用详解》已经出版
  8. python tableview绑定字典_在QTableView中使用各种自定义委托
  9. 信息系统安全等级保护基本要求_继电保护对电力系统安全运行至关重要,电网对它的基本要求有哪些...
  10. java数字代码_Java基础08—数字类处理(示例代码)
  11. Ubuntu 11.10为何值得我们期待?
  12. /etc/rc.local开启自启不执行问题
  13. Linux服务器生成https证书
  14. win10 游戏等应用打开时闪退解决方案
  15. Java(实验四)Java标准类库-将一个字符串中的小写字母变成大写字母,并将大写字母变成小写字母
  16. Android Binder总结(转自Cloud Chou's Tech Blog)
  17. AI视觉千亿规模市场虚席以待 初创企业看好“算法决定芯片”路径
  18. 二维码门禁助力于打造更智能化的出入管理-码上开门,说走就走
  19. 生物信息学(3)——双序列比对之BLAST算法简介
  20. 情不知所起,一“网”而深

热门文章

  1. python自动点赞软件_python requests 简单实现易班登录,自动点赞,评论,发表
  2. JAVASwing设置字体,字体大小
  3. 数据的导出Excel表
  4. 沉痛悼念张孝祥老师逝世
  5. 简单聊聊,我是如何零成本,推广海外游戏~
  6. PowerShell install 一键部署VMware_Workstation
  7. 留学生最常用最全的五个英文文献检索网站
  8. 消息队列RabbitMQ基本使用(Java代码实现)
  9. qq机器人插件之奥运奖牌获得数量
  10. 小学计算机网络信息安全教案,黑教版信息技术五年级上册第十五课《网络信息安全》教案.doc...