如何在Python请求中为Slack API的事件请求发送http 200
我需要使用HTTP 2xx响应事件请求。我正在使用Python中的请求方法。我怎么能把它退回呢?请帮忙 我目前的问题是,我正在本地主机上使用隧道软件。因此,对于松弛: 您的应用程序应在其中使用HTTP 2xx响应事件请求 三秒钟。如果没有,我们会考虑事件传递。 尝试失败。失败后,我们将重试三次,然后退出 指数增长 我用这个命令来回应懈怠如何在Python请求中为Slack API的事件请求发送http 200,python,slack,slack-api,Python,Slack,Slack Api,我需要使用HTTP 2xx响应事件请求。我正在使用Python中的请求方法。我怎么能把它退回呢?请帮忙 我目前的问题是,我正在本地主机上使用隧道软件。因此,对于松弛: 您的应用程序应在其中使用HTTP 2xx响应事件请求 三秒钟。如果没有,我们会考虑事件传递。 尝试失败。失败后,我们将重试三次,然后退出 指数增长 我用这个命令来回应懈怠 resp = requests.post(url,json=payload, headers=headers, cookies=cookies) data =
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回复 为了使用HTTP 200响应请求,您需要首先生成第二个进程或线程以继续执行应用程序,然后终止主线程/进程 有很多方法可以做到这一点,这里是一个完整的例子与线程和烧瓶 它收到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
请在此处添加您的代码,以便我们提供帮助。到目前为止你做了什么?你有运行API/服务器来接收请求并返回一些东西吗?@LucaBezerra,是的,我正在使用ngrok来隧道我的本地主机。问题是,由于我没有立即响应,因此延迟超过3秒,因此会重试三次。所以我得到了3个答案。请在问题中添加代码的相关部分。你在用烧瓶吗?如果是,请添加标签。added@ErikKalkokenyeah这将不起作用。您需要终止当前脚本才能发送回http 200并打开新线程或进程以继续应用程序