我需要使用HTTP 2xx响应事件请求。我在Python中使用Request方法。我怎样才能退货?请帮忙。
我当前的问题是,我在本地主机上使用隧道软件。所以要放松:
您的应用应在内部用HTTP 2xx响应事件请求 三秒钟。如果没有,我们将考虑事件的交付 尝试失败。失败后,我们将重试3次,然后退出 指数。
我通过此命令响应松弛
resp = requests.post(url,json=payload, headers=headers, cookies=cookies)
data = resp.json()
status = data['status']
send_message = status
slack_client.api_call("chat.postMessage", channel=channel, text=send_message)
现在,由于我没有在3秒内结束任何响应,因此它重试了3次,因此我得到了4条响应。
因此,一旦收到请求,我就需要使用Http2xx进行回复。
答案 0 :(得分:1)
要使用HTTP 200响应请求,您需要先生成第二个进程或线程以继续执行应用程序,然后终止主线程/进程。
有很多方法可以做到,这是一个完整的线程和Flask示例。
它正在从Slack收到一个斜杠命令请求,并立即以一条短消息响应。然后等待7秒以模拟繁重的处理过程,最后再次响应一条消息。
此示例使用斜杠命令,但该方法也适用于事件。
import threading
from time import sleep
from flask import Flask, json, request
import requests
app = Flask(__name__) #create the Flask app
@app.route('/slash', methods=['POST'])
def slash_response():
"""endpoint for receiving all slash command requests from Slack"""
# get the full request from Slack
slack_request = request.form
# starting a new thread for doing the actual processing
x = threading.Thread(
target=some_processing,
args=(slack_request,)
)
x.start()
## respond to Slack with quick message
# and end the main thread for this request
return "Processing information.... please wait"
def some_processing(slack_request):
"""function for doing the actual work in a thread"""
# lets simulate heavy processing by waiting 7 seconds
sleep(7)
# response to Slack after processing is finished
response_url = slack_request["response_url"]
message = {
"text": "We found a result!"
}
res = requests.post(response_url, json=message)
if __name__ == '__main__':
app.run(debug=True, port=8000) #run app in debug mode on port 8000