A lightweight and convenient cross network FIFO queue service based on TCP protocol.


Keywords
cross, network, queue
License
MIT
Install
pip install wukongqueue==0.0.6

Documentation

中文版 | English

wukongqueue

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


Build Status codecov PyPI version

wukongqueue的本地队列服务的实现基于Python标准库queue.

特点

  • 快(基于tcp长连接通信)
  • 支持所有Python原生类型
  • 支持断开自动重连
  • 上手成本低,api使用和标准库queue保持一致
  • 可设置认证秘钥

环境要求

安装

pip install wukongqueue

例子

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")
    time.sleep(10)
    svr.put(b"2")
    print("wait for clients...")
    time.sleep(10)
print("putted b'1' and b'2', 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()
    print("after 10 seconds, got",client.get(block=True)) # wait for 3 seconds, 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! (马上)
wait for clients... (3秒后)
putted b'1' and b'2', svr closed! (10秒后)

# clientA print secondly
got b'1' (马上)
after 3 seconds, got b'2' (3秒后)
clientA: all task done! (马上)

# clientB print lastly
clientB all task done! (马上)

更多例子

版本发布日志

License

MIT