2016-09-13 4 views
0

Ich habe eine einfache lange Umfrage-Sache mit python3 und requests Paket. Es sieht derzeit so etwas wie:Erzeuge HTTP-Fehler von python3 Anfragen

def longpoll(): 
    session = requests.Session() 
    while True: 
     try: 
      fetched = session.get(MyURL) 
      input = base64.b64decode(fetched.content) 
      output = process(data) 
      session.put(MyURL, data=base64.b64encode(response)) 
     except Exception as e: 
      print(e) 
      time.sleep(10) 

Es gibt einen Fall, in dem statt process ing die Eingabe und put das Ergebnis ing, würde Ich mag einen HTTP-Fehler erhöhen. Gibt es eine einfache Möglichkeit, dies von der High-Level-Schnittstelle Session zu tun? Oder muss ich einen Drilldown durchführen, um die Objekte der unteren Ebene zu verwenden?

+0

Haben Sie auch die Kontrolle über den Remote-Server? –

+0

Ja, ich habe auch die Kontrolle über den Remote-Server. –

Antwort

0

Da Sie Kontrolle über den Server haben möchten Sie vielleicht den 2. Anruf

Hier ist ein Beispiel mit Flasche umgekehrt die zweite Umfrage

def longpoll(): 
    session = requests.Session() 
    while True: #I'm guessing that the server does not care that we call him a lot of times ... 
     try: 
      session.post(MyURL, {"ip_address": my_ip_address}) # request work or I'm alive 
      #input = base64.b64decode(fetched.content) 
      #output = process(data) 
      #session.put(MyURL, data=base64.b64encode(response)) 
     except Exception as e: 
      print(e) 
      time.sleep(10) 

@bottle.post("/process") 
def process_new_work(): 
    data = bottle.request.json() 
    output = process(data) #if an error is thrown an HTTP error will be returned by the framework 
    return output 

diese Weise kann der Server die Ausgabe erhalten erhalten speichert oder ein schlechter HTTP-Status