python + redis 实现 分布式队列任务
时间:2022-07-24
本文章向大家介绍python + redis 实现 分布式队列任务,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
import time
from queue import Queue # 用于创建队列任务
import threading # 多线程
import redis # redis 模块
q=Queue() # 队列列表
red=redis.ConnectionPool(host="localhost",port=6379) # redis 连接池
r=redis.Redis(connection_pool=red) # redis 连接池实例
def gup(): # 生产者,产生任务丢到远程redis 维护一个队列,用于替代queue
for x in range(100):
r.lpush("list",x)
def gget():
while True: # 进来首先判断一次列表长度,度过为0表示队列空了,退出
ll=r.llen("list")
print(ll)
if ll==0:
break
try: # 增加代码健壮性
a=r.lpop("list") # 维护的list 栈中弹出左侧的key
print(a)
time.sleep(2)
except Exception as e:
print(e)
continue
def ma():
for x in range(10): # 创建10个线程 ,充当线程池作用
th=threading.Thread(target=gget)
th.start()
th.join()
if __name__ == '__main__':
gup()
time.sleep(1)
ma()
代码很少,原理也挺简单的, 先用一个方法,生成任务,丢到redis里面进行维护, 然后用多线程,每次线程开始的时候都去查询redis 维护的栈(list)中是否为空, 不为空就代表有数据,那么就弹出第一个,如果为空就退出当前while ,结束当前进程 通过redis 来代替本地的queue队列,实现分布式,实现不复杂, 配合requests就可以实现自己diy的分布式爬虫。
- 当css属性width设为100%时
- GridView实战一:自定义分页、排序、修改、插入、删除
- Windows下程序打包发布时的小技巧
- Linux的“壳”
- 网页优化系列一:合并文件请求(asp.net版)
- Windows下Thumbnail的开发总结
- 剑指OFFER之调整数组顺序使奇数位于偶数前面找(九度OJ1516)
- Linux架构
- 绘图: Python matplotlib简介
- 绘图: matplotlib Basemap简介
- GridView实战二:使用ObjectDataSource数据源控件(自定义缓存机制实现Sort)
- 把孩子打造成为码农
- 分享基于Qt5开发的一款故障波形模拟软件
- 剑指OFFER之打印1到最大的N位数(九度OJ1515)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法