我正在用 python 编写一个 Web 应用程序,并使用带有splinter的生菜来为其编写验收测试。
为此,我需要一个 wsgi 服务器在后台启动我的应用程序,以便该应用程序可用于我的测试套件。为此,我一直在另一个线程中启动一个女服务员服务器实例,以使浏览器连接到:
def setUp():
base = os.path.dirname(__file__) + "/../../.."
world.app = loadapp('config:test.ini', relative_to=base)
world.server_thread = thread.start_new_thread(serve_app, (world.app,))
def serve_app(app):
serve(app, host='0.0.0.0', port=7654)
这工作得很好 - 我的测试套件可以使用正在运行的应用程序实例来设置固定装置/模拟等,并且服务器可供我的测试连接到。但是,当测试完成时,我无法向服务器发送信号以彻底关闭自身。因此,无论如何,我是否可以以某种方式向KeyboardInterrupt
我生成的服务器线程发送一个(这将被女服务员捕获并提示它干净地关闭),或者如果失败,是否存在一个暴露非阻塞的现有 wsgi 服务器实现start()
和stop()
我可以用来代替服务员的方法?