2016-12-10 12 views
1

我試圖生成從燒瓶服務器到另一個GET請求,在目的地的一面,當我打印口,我不斷收到隨機端口,每個請求隨機口燒瓶中加入生成請求

客戶:

from flask import Flask, redirect, request 
    import requests 
    app = Flask(__name__) 
    @app.route('/acqlock/<resource_name>') 
    def acquire_resource(resource_name): 
     print request.url 
     response = requests.get('http://127.0.0.1:8080/acqlock/' + resource_name) 
     return response.text 
if __name__ == "__main__": 
    app.run(host="localhost", port=8081) 

SERVER:

from flask import Flask, redirect, request 

    app = Flask(__name__) 
    @app.route('/') 
    @app.route('/acqlock/<resource_name>') 
    def acquire_lock(resource_name): 
     print request.url 
     print request.environ.get('REMOTE_PORT') 
if __name__ == "__main__": 
    app.run(port=int("8080")) 

它使打印http://127.0.0.1:8080/acqlock/file 58077 eventhough我期待它打印http://127.0.0.1:8081 8081作爲S erver正在生成請求

回答

0

這是正常。請記住requests是這裏的客戶端,它必須創建一個新的到另一臺服務器的HTTP連接。 TCP連接在客戶端也需要一個端口,並且當您爲遠程服務器創建一個套接字時,您將爲該連接的客戶端分配一個OS端口號。

你正在傳入的HTTP連接的上下文中傳出的HTTP連接既不在這裏,也不在那裏。這是一個不同連接,在不同的方向。

如果您需要確定請求來自哪裏,請將信息添加到請求中。您可以添加自定義標題,cookie,查詢參數或發佈數據。

+0

有沒有辦法修復端口?甚至使用當前正在運行的應用程序生成請求? –

+0

你爲什麼覺得你需要這個?不,你不能。 –

+0

我有2個其他客戶端產生的請求,我想告訴他們在服務器分開做(像客戶端,沒有請求)歷史 –