我试图以特定的时间间隔从我自己的Twitch IRC频道收集数据。使用python套接字模块,有两个选项可以设置接收数据," setblocking"和" settimeout"。
我考虑过两者,但是当我的目标是以30秒的间隔收集所有数据时,他们不会提供帮助。在第30秒,我想产生输出并将其发送到频道。
的setTimeout(10): 如果它在10秒内没有填充recv缓冲区而不是返回它收集的内容,那么它会给出错误。我在错误中使用了try / except:
socket.timeout: timed out
但是仍然没有给我数据。
setblocking(0): 我也尝试将其置于非阻塞模式,但结果是:
socket.error: [Errno 11] Resource temporarily unavailable
此外,我认为阻止它也不是选项,因为我只想在30秒内返回。
那么如何以30秒的间隔收集所有数据,准备好进行处理?'
MWE(将变量填入您的设置):
import socket
irc = socket.socket()
irc.settimeout(10)
irc.connect((server, 6667))
#sends variables for connection to twitch chat
irc.send('PASS ' + password + '\r\n')
irc.send('USER ' + nick + ' 0 * :' + bot_owner + '\r\n')
irc.send('NICK ' + nick + '\r\n')
irc.send('JOIN ' + channel + '\r\n')
irc.recv(1024)