V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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
aladdindingding
V2EX  ›  Python

为什么 gevent 没有封装 epoll 呢,看只实现了 poll 和 select

  •  
  •   aladdindingding · May 18, 2021 · 3043 views
    This topic created in 1805 days ago, the information mentioned may be changed or developed.
    之前用 select 实现的总是有文件描述符限制,改了 ulimi 改打了做并发测试的时候还是会出现。
    使用系统的 epoll 行么,会不会有阻塞
    13 replies    2021-05-21 18:31:17 +08:00
    aladdindingding
        1
    aladdindingding  
    OP
       May 18, 2021
    aladdindingding
        2
    aladdindingding  
    OP
       May 18, 2021
    更改了 ulimit 但是自己做并发测试还是会出现,既然 epoll 是 io 多路复用的方式,为啥 gevent 没有实现呢
    neoblackcap
        3
    neoblackcap  
       May 18, 2021
    你问什么堵塞? IO 多路复用都会堵塞主线程
    neoblackcap
        4
    neoblackcap  
       May 18, 2021
    @neoblackcap 修正,都是同步非堵塞。至于 epoll,可以尝试直接使用标准库里面的 asyncio
    wwqgtxx
        5
    wwqgtxx  
       May 18, 2021 via iPhone
    gevent 目前版本底层是用 libev/libuv 实现的,并不会使用系统 select,建议附上代码给大家复现一下
    ch2
        6
    ch2  
       May 18, 2021
    你可以用 select.epoll
    monkeyNik
        7
    monkeyNik  
       May 18, 2021
    你可以来换我的库~封装了 select 、epoll 、kqueue
    aladdindingding
        8
    aladdindingding  
    OP
       May 18, 2021
    @neoblackcap python2 的项目,只能用 gevent 。用 asyncio 方便多了
    aladdindingding
        9
    aladdindingding  
    OP
       May 18, 2021
    @monkeyNik 大佬贴个地址呗
    aladdindingding
        10
    aladdindingding  
    OP
       May 18, 2021
    @wwqgtxx 主要是写代理,gevent 起了个 server 用户请求过来转发连接目标网站,目标网站有返回就立即写回给用户,之前这里的实现就是 gevent 的 select 一直遍历,看哪些有返回就写回给用户。
    monkeyNik
        11
    monkeyNik  
       May 18, 2021
    @aladdindingding https://github.com/Water-Melon/Melon 有问题或者意见反馈可以加 QQ 群:756582294
    julyclyde
        12
    julyclyde  
       May 21, 2021
    1 你用 epoll 还是 poll 都不影响出打开文件数的限制
    2 你先确定一下是打开文件数限制还是 poll 的 fd 数限制

    3 ulimit 我猜你用错了 http://julyclyde.org/?p=578
    aladdindingding
        13
    aladdindingding  
    OP
       May 21, 2021
    @julyclyde 用的 gevent select,并发量大的情况下就会出现 select out of range
    贴出的文档先 mark 了 下来研究
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1030 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 22:32 · PVG 06:32 · LAX 15:32 · JFK 18:32
    ♥ Do have faith in what you're doing.