我是套接字编程的新手,已经从以下资源创建了一个简单的多连接客户端服务器程序:https://realpython.com/python-sockets/
我的问题可以在下面的代码中找到:
import selectors
sel = selectors.DefaultSelector()
# ...
while True:
events = sel.select(timeout=None)
print("This is a test!")
for key, mask in events:
if key.data is None:
accept_wrapper(key.fileobj)
else:
service_connection(key, mask)
我的目标是在
events = sel.select(timeout=None)
型
行,即使没有生成事件。问题是,只要这行代码命中,后面的代码都不会运行,因为它正在等待事件。我如何在没有事件的情况下执行print()语句?
在寻找答案时,我确实遇到了这个线程:Python Socket Programming - need to do something while listening for connections
然而,这似乎比我想做的要多一点(我不需要发送/接收任何东西)。更不用说,我没有看到任何专门解决我的问题的东西(尽管公平地说,我可能没有理解它)。我还看到另一个线程(Running separate code while a socket server is running?)谈论异步,但再次...不太确定如何在我当前的程序中使用它。
对于如何在等待事件时执行print()语句,有人有什么建议吗?
1条答案
按热度按时间0x6upsns1#
只需将一个以秒为单位的超时值作为参数传递给选择器函数。
例如:
这样,10秒后,它将执行事件后的下一个代码块。
https://docs.python.org/3/library/selectors.html#module-selectors
有关更深入的说明,请参阅文档。
(我知道这个问题是3年前的,但这可能会对某人有所帮助)