如何在Python请求中为Slack API的事件请求发送http 200

如何在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 =

我需要使用HTTP 2xx响应事件请求。我正在使用Python中的请求方法。我怎么能把它退回呢?请帮忙

我目前的问题是,我正在本地主机上使用隧道软件。因此,对于松弛:

您的应用程序应在其中使用HTTP 2xx响应事件请求 三秒钟。如果没有,我们会考虑事件传递。 尝试失败。失败后,我们将重试三次,然后退出 指数增长

我用这个命令来回应懈怠

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并打开新线程或进程以继续应用程序