wukongqueue 介绍
一个纯 Python3 实现的轻量且易于使用的跨网络队列服务。
此项目主要分为 client 端和 server 端,队列数据保存于 server,同时 server 和 client 可以同时操作队列,支持多个
client,本地队列是基于 python3 标准库 queue 实现,项目核心主要是基于 TCP 长连接进行跨网络传输队列数据,同时确保 client
的操作是线程安全的。
特点 :
- 快,基于 TCP 长连接通信
- 支持自动重连
- 支持认证
- 支持连接池
- 上手快,api 使用与标准库 queue 保持一致
例子 :
server.py
from wukongqueue import WuKongQueue import time # start a queue server svr = WuKongQueue(host='127.0.0.1', port=666, max_conns=10, max_size=0) with svr: print("svr is started!") svr.put(b"1") svr.put(b"2") print("putted b'1' and b'2', wait for clients...") time.sleep(10) print("svr closed!")
clientA.py
from wukongqueue import WuKongQueueClient client = WuKongQueueClient(host='127.0.0.1', port=666) with client: print("got", client.get()) # b"1" client.task_done() import time wait = 5 time.sleep(wait) print("after %s seconds, got" % wait, client.get(block=True)) # wait for a while, then print b"2" client.task_done() print("clientA: all task done!")
clientB.py
from wukongqueue import WuKongQueueClient client = WuKongQueueClient(host='127.0.0.1', port=666) with client: client.join() print("clientB all task done!")
按上面的顺序启动三个程序,可以看到如下效果:
# server.py 首先打印 svr is started! (马上) putted b'1' and b'2', wait for clients... (马上) svr closed! (10秒后) # clientA print secondly got b'1' (马上) after 5 seconds, got b'2' (5秒后) clientA: all task done! (马上) # clientB print lastly clientB all task done! (与clientA的all task done同步)
-
连接池:
from wukongqueue import ConnectionPool,WuKongQueueClient
pool = ConnectionPool(host=”localhost”, port=2020, max_connections=3)
client = WuKongQueueClient(connection_pool=pool)
暂不支持的功能(也是TODO) :
- 持久化
我可以使用吗 :此项目自诞生起就引入我的一个大型分布式爬虫项目中,目前持续运行中,项目至今迭代了6个版本。
后 :连接池设计部分受 redis库
启发,读者如有兴趣可阅读源码与我讨论~
希望大家能够关注一下,给予我持久更新此项目的动力^_^
wukongqueue 官网
https://chasespace.github.io/wukongqueue
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。