Python http Web服务器和Raspberry上的I/O读写

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 =

我使用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 = 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操作放在同一个循环中。