从连接处理程序返回时,Gevent / greenlet关闭套接字。

时间:2015-10-28 10:48:20

标签: python sockets real-time gevent greenlets

在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只需在从连接处理程序返回时关闭此套接字。

1 个答案:

答案 0 :(得分:0)

得到了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是对我有用的答案。