python分布式任务调度_Python使用Celery分布式异步队列/任务调度(基于Redis) - pytorch中文网...
今天使用爬虫有些耗时较长,需要使用任务调度,Celery是Python开发的分布式任务调度模块,Celery本身不含消息服务,它使用第三方消息服务来传递任务,目前,Celery支持的消息服务有RabbitMQ、Redis甚至是数据库,当然Redis应该是最佳选择。
安装Celery
用pip管理工具安装Celery:
$ sudo pip install Celery
使用Redis作为Broker时,需要再安装一个celery-with-redis。
pip install celery-with-redis
开始编写tasks.py:
# -*- coding:utf8 -*-
import time
from celery import Celery
celery = Celery('tasks', broker='redis://localhost:6379/0')
# 如果有redis密码
# celery = Celery('tasks', broker='redis://:foobared@localhost:6379/0')
@celery.task
def sendmail(email):
print('sending mail to %s...' % email)
time.sleep(2.0)
print('mail sent.')
然后启动Celery处理任务:
$ celery -A tasks worker --loglevel=info
发布队列
>>> from tasks import sendmail
>>> sendmail.delay('test@ptorch.com')
可以看到,Celery的API设计真的非常简单。
然后,在Worker里就可以看到任务处理的消息:
[2013-08-27 19:20:23,363: WARNING/MainProcess] celery@MichaeliMac.local ready.
[2013-08-27 19:20:23,367: INFO/MainProcess] consumer: Connected to redis://localhost:6379/0.
[2013-08-27 19:20:45,618: INFO/MainProcess] Got task from broker: tasks.sendmail[1a0a9262-7858-4192-9981-b7bf0ea7483b]
[2013-08-27 19:20:45,655: WARNING/PoolWorker-4] sending mail to celery@python.org...
[2013-08-27 19:20:47,657: WARNING/PoolWorker-4] mail sent.
[2013-08-27 19:20:47,658: INFO/MainProcess] Task tasks.sendmail[1a0a9262-7858-4192-9981-b7bf0ea7483b] succeeded in 2.00266814232s: None
Celery默认设置就能满足基本要求。Worker以Pool模式启动,默认大小为CPU核心数量,缺省序列化机制是pickle,但可以指定为json。由于Python调用UNIX/Linux程序实在太容易,所以,用Celery作为异步任务框架非常合适。
常见问题
Celery不能跨文件调用,会出现The message has been ignored and discarded.,这个可以使用如下方法使用
celery -A file.tasks worker --loglevel=info
原创文章,转载请注明 :Python使用Celery分布式异步队列/任务调度(基于Redis) - pytorch中文网
原文出处: https://ptorch.com/news/162.html
问题交流群 :168117787
python分布式任务调度_Python使用Celery分布式异步队列/任务调度(基于Redis) - pytorch中文网...相关推荐
- mac python3打包成窗体程序_使用pyinstaller将python程序打包成exe/苹果软件的方法与异常解决 - pytorch中文网...
一.安装pyinstaller 通过清华镜像安装比较快 # 二者选其一执行,第二条快 pip3 installer pyinstaller # 清华镜像安装 # pip3 install -i htt ...
- 项目分布式部署那些事(1):ONS消息队列、基于Redis的Session共享,开源共享
因业务发展需要现在的系统不足以支撑现在的用户量,于是我们在一周之前着手项目的性能优化与分布式部署的相关动作. 概况 现在的系统是基于RabbitHub(一套开源的开发时框架)和Rabbit.WeiXi ...
- python创建矩阵_Python创建对称矩阵的方法示例【基于numpy模块】
本文实例讲述了Python创建对称矩阵的方法.分享给大家供大家参考,具体如下: 对称(实对称)矩阵也即: step 1:创建一个方阵 >>> import numpy as np & ...
- 秒杀抢购异步下单:基于Redis的消息队列秒杀抢购异步下单功能
学习Redis时,练习的实战项目代码--基于Redis的Stream类型的秒杀抢购异步下单. 说明: Redis的stream类型的消息队列实现异步下单功能.Redis版本至少要5.0及以上版本才可以 ...
- loglevel python 不输出_Python 通过 Celery 框架实现分布式任务队列!
Celery 是一个简单.灵活且可靠的分布式消息处理系统,主要用来作为任务队列对海量消息数据进行实时的处理,在多个程序线程或者主机之间传递和分发工作任务.同时也支持计划任务等需求. 一.环境配置 Ce ...
- python金融实战_Python金融实战(异步图书)
领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...
- 浙大python读者验证码_Python实现简单生成验证码功能【基于random模块】
本文实例讲述了Python实现简单生成验证码功能.分享给大家供大家参考,具体如下: 验证码一般用来验证登陆.交易等行为,减少对端为机器操作的概率,python中可以使用random模块,char()内 ...
- 用python计算准确率_Python中计算模型精度的几种方法,Pytorch,中求,准确率
方法一:直接在epoch过程中求取准确率 简介:此段代码是LeNet5中截取的. def train_model(model,train_loader): optimizer = torch.opti ...
- Python一些可能用的到的函数系列81 基于Redis Stream的简单消息队列对象
说明 一个实现消息队列简单管理的对象 内容 代码 import redis # 基于Redis Stream的消息队列 class LittleRQ:def __init__(self, host, ...
最新文章
- TCP/IP协议三次握手与四次握手流程解析
- 新的小游戏发布啦。Pop Jungle
- RotateWorldTest对层动作
- MySql入门使用:登录及简单创建查询表
- mysql etc my.cnf_mysql配置文件 /etc/my.cnf 详细解释
- 由于CRS磁盘dismount造成的CRS进程无法启动问题
- java组件是什么意思_年前面试京东3面凉经~ 面试过程与真题全分享+备战春招(java)...
- Spring boot + maven
- CAN 总线嵌入式驱动编程
- 「05」回归的诱惑:一文读懂线性回归
- 为什么双重检查锁模式需要 volatile ?
- navicat12简体中文专业版免费使用教程
- 【EXLIBRIS】随笔记 004
- C语言结业作业,2019年本科课程-C语言程序设计结业试卷(附答案).doc
- 微信小程序开发(十五)小程序使用scrollview实现滚动导航栏
- java 对战平台-魔兽版
- js:使用nodejs为页面传递mysql中的数据
- 什么叫金叉和死叉?什么叫macd二次死叉?
- PV、UV、VV、IP的区别
- Linux多线程概念及实现
热门文章
- controller如何保证当前只有一个线程执行_今天我们来聊一聊 Spring 中的线程安全性...
- windos 2008 vista 下的端口范围改变
- HttpURLConnection IllegalStateException
- java B2B2C 源码 多级分销Springcloud多租户电子商城系统- 整合企业架构的技术点(二)...
- Swift - 委托(delegate)的介绍,及使用样例
- 【SICP练习】104 练习3.1-3.4
- 安卓重要组件#1--ListView创建及基本的使用方法
- 顶点(vertexs) 图元(primitives) 片元(fragments片断) 像素(pixels)
- Smart Card知识
- Spring testcontext