2017-06-04 90 views
0

我正在使用Flask創建一個應用程序,該應用程序從具有HTTPS POST的服務器接收一些數據並處理其數據。一旦我收到來自服務器的消息,我需要發送一個「狀態= 200」,以便服務器知道我獲得了信息,並停止重新向我發送信息。如何在python中發送狀態200應答HTTPS POST

我必須發送HTTPS GET嗎?這不是一個真正的get,因爲我唯一需要的是通知服務器,我得到了這個消息...

我怎麼能在python中做到這一點?我需要處理我收到的數據,但沒有返回。

app = Flask(__name__) 
@app.route('/webhook', methods=['POST','GET'])`` 
def webhook(): 


req = request.form 
xml = req['data'] 
#HOW DO I SEND A CODE 200 NOW??? 
info = ET.fromstring(xml) 
print info[0].text 
print info[1].text 
print info[2].text 
print info[3].text 

謝謝!

+0

在你的路線中,你不能只是'返回''' - 這將是一個空的迴應,我相信200的狀態。 –

+0

是的,但我想知道是否有一個「更專業」的方式來做到這一點xD – Alex

回答

2

如果你想知道有關響應代碼,您可以發送一個空的響應,並只能指定像這樣

return '', 200 

響應代碼的完整的答案可以在Return HTTP status code 201 in flask

UPDATE被發現對於更新的問題:

您可以使用Thread

import threading 

app = Flask(__name__) 
@app.route('/webhook', methods=['POST','GET'])`` 

def worker(xml): 
    info = ET.fromstring(xml) 

    print info[0].text 
    print info[1].text 
    print info[2].text 
    print info[3].text 

    return 

def webhook(): 
    req = request.form 
    xml = req['data'] 

    # This executes in background 
    t = threading.Thread(target=worker, args=(xml,)) 
    t.start() 

    # So that you can return before worker is done 
    return '', 200 
+0

事情是,我需要返回的東西,一旦我有處理數據。 我可以在代碼中間收集數據之後發送狀態200嗎?我剛剛更新了這個問題,以顯示它 – Alex

+0

@Alex一旦你返回一個響應 - 就是這樣...(除非你傳遞給工作進程/線程/不管)然而,我們現在正在接近一個全新的問題。 「我如何返回200響應」已被回答。 –

+0

是的,你是對的。但是你對如何解決這個新問題有任何想法嗎? – Alex