V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
lasuar
V2EX  ›  Python

个人队列服务项目开源!大家来瞅瞅~

  •  
  •   lasuar · 2020-01-01 13:39:44 +08:00 · 3654 次点击
    这是一个创建于 1791 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目地址

    wukongqueue

    简介

    轻量且使用方便的跨进程队列服务

    特点

    • 够快,客户端直接基于 tcp 协议与服务器通信
    • 够简单,api 命名与使用基本与 python 标准库queue保持一致
    • 支持客户端以预连接模式启动,即客户端的启动不依赖服务端

    这个项目是我在开发一个较大的爬虫项目时受到启发的,当时项目需要开发新功能,如果仍然在现有的单进程代码中开发,将大大增加代码复杂度,所以需要队列来解耦为上下游服务,但是又不至于用到 redis 或其他 mq 中间件这样专业功能完备的服务,因为数据不需要持久化,而且不想增加过多的外部依赖,所以就有了这样一个想法。。
    本着少造轮子的原则,它的服务端也就是本地队列服务是直接用的标准库实现的。

    欢迎反馈 bug !感谢 star !

    感谢各位的浏览,谢谢~ 祝 2020 年不缺钱!不缺项目!不加班!

    第 1 条附言  ·  2020-01-09 15:36:08 +08:00

    这几天一直在做改进和更新,以下是最新的更新日志:

    • 初版是调用标准库queue来实现的本地队列服务,发现这样很难进行新功能的扩展开发,现改为直接复用queue源码,不再依赖标准库,后续完全自主维护次项目!
    • 完善api,现基本与标准库queue的api一致,task_done和join都有了~
    • 完善的日志记录,可控制打印级别!
    • 增加server和与client之间的认证功能!

    项目经过较为完整的单元测试,欢迎大家使用!

    第 2 条附言  ·  2020-01-09 15:38:46 +08:00

    如果有什么idea或问题,请在这里留言!

    10 条回复    2020-03-21 22:54:05 +08:00
    loading
        1
    loading  
       2020-01-01 13:44:14 +08:00   ❤️ 1
    不知道对我有没有用,不过请先收下我的回复和 star
    lasuar
        2
    lasuar  
    OP
       2020-01-01 13:47:09 +08:00
    @loading 哈哈,收下收下
    lasuar
        3
    lasuar  
    OP
       2020-01-01 14:16:45 +08:00
    自顶一波!
    CallMeReznov
        4
    CallMeReznov  
       2020-01-01 14:19:46 +08:00
    加 STAR 了,就是一个简易版的订阅发布服务吗?
    lasuar
        5
    lasuar  
    OP
       2020-01-01 14:30:43 +08:00
    @CallMeReznov 不是的哈,订阅发布是有主题概念的,并且支持按条件订阅。我这个是完全是 mq 模式的,目前只有 server(producer)和 client(consumer)概念。预连接功能是为了贯彻松耦合思想。感谢回复~
    lasuar
        6
    lasuar  
    OP
       2020-01-01 20:18:42 +08:00
    @lasuar 更正一下说法,server 角色并不对应 mq 中的 producer,而仅仅指的是启动队列所属的进程,无论是 server 还是 client 都可以 get 和 put。
    zhenruyan
        7
    zhenruyan  
       2020-01-07 19:01:56 +08:00   ❤️ 1
    点了 star
    lasuar
        8
    lasuar  
    OP
       2020-01-09 15:36:32 +08:00
    upup~
    qile1
        9
    qile1  
       2020-03-21 19:14:22 +08:00 via Android
    客户端可以添加队列不.有没有接口查询队列数量,我如果只是添加执行列表,可否提供查询接口显示当前列表数据
    lasuar
        10
    lasuar  
    OP
       2020-03-21 22:54:05 +08:00
    @qile1 标准库有的它都有,get/put/qsize/empty/full/task_done/join, +reset
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3314 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:36 · PVG 20:36 · LAX 04:36 · JFK 07:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.