wukongqueue 跨网络通信队列服务开源项目

我要开发同款
匿名用户2020年02月18日
58阅读

技术信息

开源地址
https://chasespace.github.io/wukongqueue
授权协议
MIT

作品详情

一个纯Pytho3实现的轻量且易于使用的跨网络队列服务。

此项目主要分为cliet端和server端,队列数据保存于server,同时server和cliet可以同时操作队列,支持多个cliet,本地队列是基于pytho3标准库queue实现,项目核心主要是基于TCP长连接进行跨网络传输队列数据,同时确保cliet的操作是线程安全的。

特点:

快,基于TCP长连接通信支持自动重连支持认证支持连接池上手快,api使用与标准库queue保持一致

例子:

server.py

fromwukogqueueimportWuKogQueueimporttime#startaqueueserversvr=WuKogQueue(host='127.0.0.1',port=666,max_cos=10,max_size=0)withsvr:prit("svrisstarted!")svr.put(b"1")svr.put(b"2")prit("puttedb'1'adb'2',waitforcliets...")time.sleep(10)prit("svrclosed!")

clietA.py

fromwukogqueueimportWuKogQueueClietcliet=WuKogQueueCliet(host='127.0.0.1',port=666)withcliet:prit("got",cliet.get())#b"1"cliet.task_doe()importtimewait=5time.sleep(wait)prit("after%ssecods,got"%wait,cliet.get(block=True))#waitforawhile,thepritb"2"cliet.task_doe()prit("clietA:alltaskdoe!")

clietB.py

fromwukogqueueimportWuKogQueueClietcliet=WuKogQueueCliet(host='127.0.0.1',port=666)withcliet:cliet.joi()prit("clietBalltaskdoe!")

按上面的顺序启动三个程序,可以看到如下效果:

#server.py首先打印svrisstarted!(马上)puttedb'1'adb'2',waitforcliets...(马上)svrclosed!(10秒后)#clietApritsecodlygotb'1'(马上)after5secods,gotb'2'(5秒后)clietA:alltaskdoe!(马上)#clietBpritlastlyclietBalltaskdoe!(与clietA的alltaskdoe同步)连接池:fromwukogqueueimportCoectioPool,WuKogQueueClietpool=CoectioPool(host="localhost",port=2020,max_coectios=3)cliet=WuKogQueueCliet(coectio_pool=pool)

暂不支持的功能(也是TODO):

持久化

我可以使用吗:此项目自诞生起就引入我的一个大型分布式爬虫项目中,目前持续运行中,项目至今迭代了6个版本。

后:连接池设计部分受redis库启发,读者如有兴趣可阅读源码与我讨论~

希望大家能够关注一下,给予我持久更新此项目的动力^_^

功能介绍

一个纯 Python3 实现的轻量且易于使用的跨网络队列服务。 此项目主要分为 client 端和 server 端,队列数据保存于 server,同时 server 和 client 可以同时...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论