wukongqueue

跨网络通信队列服务
授权协议 MIT
开发语言 Python
所属分类 服务器软件、 缓存服务器
软件类型 开源软件
地区 国产
投 递 者 袁弘化
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

一个纯 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库启发,读者如有兴趣可阅读源码与我讨论~

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

 相关资料
  • 我们有一个用例,希望从另一个weblogic服务器读取weblogic服务器中维护的JMS队列中的消息。 设置如下- Weblogic Server-1 Domain-1有一个分布式JMS队列Q1 Weblogic Server-2 Domain-2有一个Application A 应用程序A想要读取来自Q1的消息 问题: a、 首先,Application-a是否可以从其他服务器中的WebLog

  • 用途: 提供对网络通信的访问 Addressing, Protocol Families and Socket Types Looking up Hosts on the Network Finding Service Information Looking Up Server Addresses IP Address Representations TCP/IP Client and Serve

  • 使用QQ轻游戏后台 QQ轻游戏后台用现成的房间逻辑,开发者可以使用进行房间创建、加入、离开、以及自带的帧同步以及消息同步方案。 使用QQ轻游戏后台详情跳转至此处 自建后台 使用自建后台,开发者可以使用引擎自带的 BK.WebSocket、BK.Socket、BK.HttpUtil三种方法进行后台数据的交换。 使用自建后台详情跳转至此处 因为自建后台的房间概念QQ轻游戏并不理解,为在聊天窗中模拟房间

  • 德州仪器(TI)的CC3000 WiFi模块是一款小型银色封装,最终为您的Arduino项目带来了易于使用,价格合理的WiFi功能。 它使用SPI进行通信(而不是UART!),因此您可以根据需要快速推送数据,也可以根据需要尽可能慢地推送数据。 它有一个带有IRQ引脚的适当中断系统,因此您可以进行异步连接。 它支持802.11b/g,开放/ WEP/WPA/WPA2安全性,TKIP和AES。 带有“

  • Chrome应用通过sockets接口支持TCP和UDP协议,使网络通信成为可能。使用sockets接口时,声明权限比较特殊,并不在permissions中声明,而是直接在Manifest的sockets中声明: "sockets": { "udp": { "send": ["host-pattern1", ...], "bind": ["host-patt

  • 在网络流量工具Charles的安装和用法和6.1 分析HTTP/HTTPS网络流量 这两节,我们介绍了对iOS的网络通信进行分析的方法。 利用文章介绍的方法,可以发现有以下几类: 发送明文密码 有的应用一点也不注意用户数据的安全,竟然发送明文密码。读者可以拿自己常用的App试试,应该能发现这种App,我发现我常用的一个电影相关App竟然用HTTP直接发送用户的明文密码。 发送密码的md5 有的应用

  • 我正在使用azure服务总线主题和订阅机制,并希望处理所有在死信队列中的消息。 此外,我想通过C#中的Azure Web作业处理消息,并将其发送回队列。所以我想知道如何通过我的应用程序处理死信队列上的消息?

  • 我正在尝试设计一个基于SQS、Lambda和SNS的小型消息处理系统。在失败的情况下,我希望将消息排入死信队列(DLQ)中,并调用webhook。 目前,如果一切顺利,流程应该是这样的: SQS(用于处理重试)将消息排入队列 lambda由SQS调用并处理消息 lambda发送webhook,并正常完成 如果lambda中的某些东西出错(无法调用success webhook,无法处理手头的任务)