2016-08-15 61 views
0

我想只使用python HTTPServer提供有限數量的請求。使用python HTTPServer的服務請求數

下面是關於我的體系結構的一些事情: 我有一個客戶端去服務器並請求數據。 服務器(pythonic HTTPServer)有一個包含數據的列表。 客戶端每次請求數據時,都會獲取列表中的下一個項目。 我希望服務器在其列表中發送所有數據時停止。 我想過的解決方案是檢查列表中的數據數量,並只提供這個次數。 我必須注意,只有一個客戶端用於測試目的。

我該如何實現它? 我想過在發送所有命令時提出一個事件,所以某些線程會終止服務器,但也許你有一個更簡單的方法。

在此先感謝

+1

每當客戶端到達時,您的應用程序將提供該數據並將其從列表中刪除(或存儲在另一個列表中,取決於您的要求)。當服務列表長度爲零時,服務器應該停止服務,並開始告訴客戶端數據結束。 – cuongnv23

+0

我在測試中使用它,所以我想服務器安靜地死亡 –

回答

0

所以,你可能希望參考這個https://docs.python.org/2/library/basehttpserver.html#more-examples 你必須定義自己的keep_running()條件。以下是我的示例:

import BaseHTTPServer 

httpd = BaseHTTPServer.HTTPServer(('', 8000), BaseHTTPServer.BaseHTTPRequestHandler) 
mylist = range(10) 
while mylist: 
    httpd.handle_request() 
    mylist.pop() # remove last item of `mylist` 

當您運行此代碼時,它將監聽端口8000。您向localhost:8000發出的每個請求都將從mylist中刪除一個項目。當mylist爲空時,該服務器將被終止。

+0

謝謝,但是我想每次發送不同的響應根據mylist。 –