我有一个使用Flask的HTTP API,并且在一个特定的操作中,客户端使用它来检索从第三方API获取的信息。检索是用芹菜任务完成的。通常情况下,我的方法是接受客户端对该信息的请求,并返回一个303 See Other
响应,其URI可以在后台作业完成时作为响应轮询。Flask请求等待异步后台作业
但是,有些客户需要在单个请求中完成操作。他们不想轮询或遵循重定向,这意味着我必须同步运行后台作业,保持连接直到完成,并以相同的响应返回结果。我知道Flask streaming,但是如何用Flask做这样的长时间共享?
为了实现这一目标,只需在作业完成前将响应返回给客户端即可。但是,请确保在gevent wsgi容器内部运行,以免最终耗尽服务器的资源。对于开发目的,使用'threaded = True'运行服务器。 – sean
问题是如何防止客户端在此期间超时。 –
你真的很受客户的支配。根据客户端的不同,推送某种标识符可能会比较好,以便在发生请求时出现任何原因导致连接关闭的情况下,可以获得响应。 – sean