server.bind(('0.0.0.0', port))
server.listen(1)
poller.register(server, uselect.POLLIN)
where True:
res = poller.poll(0)
if res:
(socket, sockaddr) = server.accept()
handle(socket)
...
程式運作基本上都很好, 但是會在某個沒有規律的神奇時間出現嚴重例外而重置, 出現以下訊息:Fatal exception 28(LoadProhibitedCause):
epc1=0x4025681d, epc2=0x00000000, epc3=0x00000000,
excvaddr=0x00000010, depc=0x00000000
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
...
經過反覆實驗, 發現只要叫用 poll() 時不要給 0 作為 timeout, 就可以避免了。因此最後修改的程式就把 poll(0) 改為 poll(1) 即可。我寫好的 Web Server 可以參考這裡。