【问题标题】:Gevent/greenlet closes socket when returned from connection handler.Gevent/greenlet 从连接处理程序返回时关闭套接字。
【发布时间】:2016-01-28 02:34:41
【问题描述】:

在 gevent 1.0.2 中,我正在使用 StreamServer ,并且在处理连接时,我将套接字保留在 dict 中以发送等待队列的事件,这在 1.0.2 中可以正常工作,但在最新版本 1.1.x 中则不行当从连接处理程序返回时,套接字只是关闭。如何在 python 中使用最新的 gevent。

def add_listener(self, stream_id , socket):
    socket.send(OK_200)
    self.event_listeners[stream_id][socket] = True

我只是将打开的套接字保存在字典中,当有一些事件时广播事件。这在 1.0.2 版本中运行良好,但在最新的 1.1.x 中,当从连接处理程序返回时,它只会关闭此套接字。

【问题讨论】:

    标签: python sockets real-time gevent greenlets


    【解决方案1】:

    得到了 IRC 的帮助,

    <champax> think you hit : https://github.com/gevent/gevent/issues/594
    <champax> you myay have to override do_close
    <champax> *may
    <pigmej> no, just don't return from handler
    <champax> yeah working too
    <ahbinav> i am waiting on a queue for events and broadcasting to list of sockets when event arrives in the queue. So, overriding do_close should do for me. I will try that. 
    

    该行为已记录在案。在 streamServer 中什么都没有覆盖 do_close 是对我有用的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-07
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      相关资源
      最近更新 更多