【发布时间】:2020-06-11 15:48:31
【问题描述】:
我有一个烧瓶应用程序,旨在托管在多个主机上。也就是说,同一个应用程序在不同的主机上运行。然后,每个主机都可以向其他主机发送请求,以在其各自的系统上采取一些行动。
例如,假设系统 A 和 B 都在运行这个烧瓶应用程序。 A 知道 B 的 IP 地址和应用托管在 B 上的端口号。A 通过为 B 准备的 POST 获取请求。然后 A 需要将此请求转发给 B。
我在一个路由中完成了转发,该路由仅检查附加到 POST 的 JSON 以查看它是否是预期的主机。如果不是,则使用 python 的请求库向其他主机发出 POST 请求。
我的问题是如何在 python unittest 中模拟这个环境(具有不同端口的同一应用程序的两个不同实例),以便我可以确认转发是否正确完成?
现在我正在使用 app.test_client() 来测试大多数路由,但据我所知 app.test_client() 不包含与之关联的端口号或 IP 地址。因此,让应用程序 POST 到另一个 app.test_client() 似乎不太可能。
我尝试将应用程序托管在不同的线程中,但似乎没有一种干净简单的方法可以在 app.run() 启动后终止线程,因为 app.run() 永远不会退出,因此无法加入。此外,应用程序 (app.config) 的内部状态将被隐藏。这使得验证 A 不执行请求而 B 执行非常困难。
有没有办法在不同的端口号上同时运行两个烧瓶应用程序,并且仍然可以访问这两个应用程序的 app.config?还是我坚持使用线程并寻找其他方法来确保 A 不执行请求而 B 执行?
注意:这些应用没有任何论坛,因此没有 CSRF。
【问题讨论】:
标签: python flask python-requests python-unittest