【发布时间】:2018-11-01 15:07:34
【问题描述】:
在烧瓶视图中,我通过 API 调用接收数据,这些数据必须传递给有时非常慢的外部 API。
所以我希望视图在异步处理请求时返回一个肯定的状态代码。
我已经尝试过 requests-futures 并且在回调方面遇到了困难:
def bg_cb(sess, resp):
print(resp.text)
@app.route('/incomingdata', methods=['POST',])
def clients():
(... process incoming POST data and create outgoing API call. here I inserted a demo call to httpbin.org that simulates a very slow API ...)
from requests_futures.sessions import FuturesSession
session = FuturesSession()
future = session.get('http://httpbin.org/delay/3', background_callback=bg_cb)
response = future.result()
return jsonify({'status': 'ok'}), 200
不幸的是,上面的代码将等待返回,直到回调被处理。这里是 3 秒。
我怎样才能实现结果,即视图立即返回 200 响应,并在 3 秒后调用回调函数。
提前谢谢你!
【问题讨论】:
-
requests-futures不会通过单个 API 调用帮助您。另外,在 3 秒等待期间,除了 200 之外,您还会返回什么? -
还是调用者只需要知道你收到了请求,并没有实际的数据返回给他们?
-
完全正确。调用者只需要知道数据已经被传递。总是 200。
-
回调函数会有更多的业务逻辑...
标签: python flask requests-futures