我有一个由 REST API 提供的服务,一个 Python 库使用 python-requests 包装它。
我有一个由第三方(不是 Python)设计的“哑”用户界面,用于连接到本地 XML-RPC。
现在我必须连接两端并将 XML-RPC 调用转发到 REST API 并返回结果。它主要是异步的,不依赖于实时返回给用户的结果。大多数 XML-RPC 调用都应该立即返回,将任务排队,而其他一些调用将在稍后查询结果。数据存储在 sqlite 数据库中,直到需要。
所以,我决定为这个中间层使用twisted.web.xmlrpc,并使用基于请求的库进行远程调用,它工作正常。我想我偶尔会阻塞扭曲的主循环几秒钟,但这没什么大不了的。
问题是我还必须从这个中间层上传一些大文件到提供 REST API 的 HTTP 服务器。我无法使用基于请求的库进行这些上传,因为它会阻止扭曲循环,直到上传完成。
我宁愿不使用多线程,而且我真的不想重写我作为扭曲客户端所拥有的基于 python-requests 的库。有什么方法可以将请求集成到扭曲的主循环或任何其他合理的解决方案中?