2014-02-19 39 views
0

我有一个使用Flask的HTTP API,并且在一个特定的操作中,客户端使用它来检索从第三方API获取的信息。检索是用芹菜任务完成的。通常情况下,我的方法是接受客户端对该信息的请求,并返回一个303 See Other响应,其URI可以在后台作业完成时作为响应轮询。Flask请求等待异步后台作业

但是,有些客户需要在单个请求中完成操作。他们不想轮询或遵循重定向,这意味着我必须同步运行后台作业,保持连接直到完成,并以相同的响应返回结果。我知道Flask streaming,但是如何用Flask做这样的长时间共享?

+0

为了实现这一目标,只需在作业完成前将响应返回给客户端即可。但是,请确保在gevent wsgi容器内部运行,以免最终耗尽服务器的资源。对于开发目的,使用'threaded = True'运行服务器。 – sean

+0

问题是如何防止客户端在此期间超时。 –

+0

你真的很受客户的支配。根据客户端的不同,推送某种标识符可能会比较好,以便在发生请求时出现任何原因导致连接关闭的情况下,可以获得响应。 – sean

回答

0

龙卷风会做的伎俩。 烧瓶不是为了同步而设计的。 Flask实例一次处理一个线程中的一个请求。因此,当您持有该连接时,将不会继续进行下一个请求。

+0

这不是问题。 –