2016-09-13 1 views
0

J'ai une simple question de sondage long en utilisant python3 et le paquet requests. Il semble actuellement quelque chose comme:Générer une erreur http à partir de requêtes python3

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) 

Il y a un cas où au lieu de process l'entrée et ing put ing le résultat, je voudrais soulever une erreur http. Existe-t-il un moyen simple de le faire à partir de l'interface de haut niveau Session? Ou dois-je forer pour utiliser les objets de niveau inférieur?

+0

Avez-vous également le contrôle du serveur distant? –

+0

Oui, j'ai également le contrôle du serveur distant. –

Répondre

0

Puisque vous avez le contrôle sur le serveur que vous pouvez inverser le 2ème appel

Voici un exemple en utilisant une bouteille à recive le 2e sondage

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 

De cette façon, le serveur obtenir la sortie ou un mauvais statut HTTP