Python http Web服务器和Raspberry上的I/O读写
我使用http Web服务器python脚本:Python http Web服务器和Raspberry上的I/O读写,python,web-services,raspberry-pi,webserver,Python,Web Services,Raspberry Pi,Webserver,我使用http Web服务器python脚本: class PiFaceWebHandler(http.server.BaseHTTPRequestHandler): def do_GET(self): [....] if __name__ == "__main__": # get the port if len(sys.argv) > 1: port = int(sys.argv[1]) else: port =
class PiFaceWebHandler(http.server.BaseHTTPRequestHandler):
def do_GET(self):
[....]
if __name__ == "__main__":
# get the port
if len(sys.argv) > 1:
port = int(sys.argv[1])
else:
port = DEFAULT_PORT
# set up PiFace Digital
PiFaceWebHandler.pifacedigital = pifacedigitalio.PiFaceDigital()
print("Starting simple PiFace web control at:\n\n"
"\thttp://{addr}:{port}\n\n"
"Change the output_port with:\n\n"
"\thttp://{addr}:{port}?output_port=0xAA\n"
.format(addr=get_my_ip(), port=port))
# run the server
server_address = ('', port)
try:
httpd = http.server.HTTPServer(server_address, PiFaceWebHandler)
httpd.serve_forever()
except KeyboardInterrupt:
print('^C received, shutting down server')
httpd.socket.close()
它工作正常,但我希望脚本(或另一个)在一个while循环中连续检查一些i/O,即。
有时,这个I/O可以通过http请求改变状态。
目前,I/O在http请求上更改状态,但我找不到在外部触发器(另一个输入ie)上更改它们的提示
我该怎么办?在哪里可以编写循环测试代码
我说清楚了吗
谢谢,不熟悉raspberry pi,但看起来您的问题可以通过事件循环和协同程序解决。是的,我理解,但是web服务器一直在运行[httpd.serve_ever()]我不知道如何以及在何处创建循环或类似的东西。你可以使用事件循环中的文件观看,同时使用事件循环的
运行服务器,直到完成\永远运行。你有url/tuto/示例来说明这一点吗?对不起,我刚刚意识到http.server.HTTPServer
与asyncio
并不真正兼容,相反,您可以在while循环()中使用handle\u request()
,而不是serve\u forever()
,并将IO操作放在同一个循环中。