Python:asyncore&其他线程

时间:2015-01-25 04:23:18

标签: python multithreading sockets asyncore

我不熟悉在python中使用asyncore。

在我目前的设置中,我在自己的线程上使用asyncore的循环。在那个帖子上,我之前创建了一个服务器套接字。

就像在示例中一样,我接受传入的连接并产生一个处理程序。但是,与示例不同,我的连接不是简单的查询:它们是与消息传递服务器的连接。

这意味着,当处理程序对象处于活动状态并等待更多数据(并且我们已达到静止状态)时,另一个线程可能会收到一个事件(如刚刚完成的进程)并希望发送一些数据那些插座。

但是,如果(在调用线程上)我执行“sent = self.send(data)”,则变量“sent”最终为None ...即使套接字仍处于活动状态且一切都没有。

为了更清楚,当我调用send时,这里是每个线程的堆栈跟踪的良好表示:

Thread N:
myThreadMain
asyncore.loop()

Thread M:
.....
processDidExit
Messaging.sendMessage
ConnectionHandler.handleMessage
self.dispatcher_with_send::send(msg)

(注意我在那里使用C ++表示法只是为了表明ConnectionHandler.handleMessage正在调用它的超类的send方法。)

就像我说的那样,send方法返回None,'writable'从不被调用,也不是'handle_write'。我不确定我做错了什么......非常感谢任何帮助!

0 个答案:

没有答案