【发布时间】:2013-04-04 06:07:18
【问题描述】:
我正在按照一些示例代码使用asyncorehere,只为asyncore.loop 设置了timeout 值,如下面的完整示例所示:
import smtpd
import asyncore
class CustomSMTPServer(smtpd.SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data):
print 'Receiving message from:', peer
print 'Message addressed from:', mailfrom
print 'Message addressed to :', rcpttos
print 'Message length :', len(data)
return
server = CustomSMTPServer(('127.0.0.1', 1025), None)
asyncore.loop(timeout = 1)
我预计 1 秒后会发生超时,但事实并非如此。代码运行时间超过一秒。我在这里错过了什么?
【问题讨论】:
-
@pst:计数不是一个选项。不知道会不会事先有零个或多于零个连接。
-
那就别拐弯抹角了
-
@pst 我不知道你的意思。我的问题是:为什么
asyncore.loop()的超时在指定时间后没有结束函数asyncore.loop()。 -
好吧,考虑一些情况:1) 文档谎称当没有更多开放通道时它将停止运行,2) 文档谎称
timeout做了什么,3) asyncore没有在选择 4 中使用指定的超时时间)有 are 开放通道。我怀疑如果指定了计数(例如 2),它将很快结束。如果确实如此,那么可能会排除 #2 和 #3。 -
@pst:我不明白你的意思。也许你可以开始用一个清晰、简洁和措辞恰当的答案来回答以下问题:
asyncore.loop()中的timeout参数的目的是什么?
标签: python python-2.7 timeout asyncore