2016-08-15 4 views
0

Ich möchte nur eine begrenzte Anzahl von Anfragen mit Python HTTPServer dienen.Serving Anzahl der Anfragen mit Python HTTPServer

Hier sind ein paar Dinge über meine Architektur: Ich habe einen Client, der an den Server geht und fragt nach Daten. Der Server (Pythonic HTTPServer) hat eine Liste mit Daten. Jedes Mal, wenn der Client nach Daten fragt, wird das nächste Element in der Liste angezeigt. Ich möchte, dass der Server stoppt, sobald er alle Daten in seiner Liste gesendet hat. Die Lösung, über die ich nachgedacht habe, ist die Anzahl der Daten in der Liste zu überprüfen und nur so oft zu bedienen. Ich muss beachten, dass es nur einen Client gibt, wie ich es für Testzwecke mache.

Wie implementiere ich es? Ich dachte darüber nach, ein Ereignis auszulösen, wenn alle Befehle gesendet werden, so dass ein Thread den Server umbringt, aber vielleicht hast du einen einfacheren Weg.

Vielen Dank im Voraus

+1

Jedes Mal, wenn der Client erreicht, wird Ihre App diese Daten bereitstellen und sie aus der Liste entfernen (oder in einer anderen Liste speichern, abhängig von Ihren Anforderungen). Wenn die Länge der Servoliste Null ist, sollte Ihr Server das Serving beenden und dem Client das Ende der Daten mitteilen. – cuongnv23

+0

Ich benutze es in einem Test, so will ich den Server friedlich sterben –

Antwort

0

So möchten Sie können diese https://docs.python.org/2/library/basehttpserver.html#more-examples Sie verweisen müssen Ihre eigenen keep_running() Zustand definieren. Unten ist mein Beispiel:

import BaseHTTPServer 

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

Wenn Sie diesen Code ausführen, es auf Port 8000 hören. Jede Anfrage, die Sie an localhost:8000 stellen, wird einen Artikel aus mylist entfernen. Wenn mylist leer ist, wird dieser Server beendet.

+0

danke, aber ich würde gerne verschiedene Antwort jedes Mal nach Mylist senden. –

Verwandte Themen