将已发布的数据传递给拆卸函数

2024-06-13 21:45:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我收到发布的数据并立即返回空的200 OK响应。之后我将处理接收到的数据。我正在考虑如何使用teardown函数,但没有找到如何将接收到的数据传递给它:

@app.route('/f', methods = ['POST'])
def f():

    data = request.stream.read()
    return ''

@app.teardown_request
def teardwon_request(exception=None):

    # How to use posted data here?

烧瓶版本为0.10.1

我正在尝试实现一个Paypal IPN侦听器

https://developer.paypal.com/webapps/developer/docs/classic/ipn/gs_IPN/#overview

请注意,侦听器的HTTP200响应发生在侦听器的IPN消息之前。你知道吗


Tags: 数据函数appdeveloperdatastreamrequestdef
1条回答
网友
1楼 · 发布于 2024-06-13 21:45:29

您的工作过于复杂;只需在请求处理程序中从Flask服务器发送一个请求。Paypal IPN通知只需要一个空的200响应,Paypal并不要求您在将HTTP请求发送到服务器之前发送200 OK。你知道吗

概述页面确实让人困惑,但是发布的PHP代码也不会关闭请求,直到paypalipn发布回他们的服务器。你知道吗

如果这个是一个硬需求(使它成为一个糟糕的设计),那么您必须异步处理返回Paypal的请求。你可以用一个单独的线程来完成这个任务,例如,使用一个队列,把从IPN接收到的数据推送进来,让一个单独的线程轮询队列,并从该线程与Paypal通信。或者您可以使用Celery来简化作业(将任务推出以异步处理)。不管怎样,这都可以让您提前关闭传入的请求。你知道吗

相关问题 更多 >