2017-01-10 4 views
0

J'essaie de simuler une erreur de protocole 504 délai d'attente de la passerelle. C'est mon code serveur. Je voudrais renvoyer une erreur 504 dans la méthode add().Python Simulate 504 Gateway Timeout Erreur

from SimpleXMLRPCServer import SimpleXMLRPCServer 

def add(x,y): 
    return x+y 

# A simple server with simple arithmetic functions 
server = SimpleXMLRPCServer(("localhost", 8000)) 
print "Listening on port 8000..." 
server.register_multicall_functions() 
server.register_function(add, 'add') 
server.serve_forever() 

Merci d'avance pour votre temps.

+0

Quel cadre? DJango? Ballon? En général, tout ce dont vous avez besoin est d'ajouter le code de sortie dans la réponse, par exemple: 'return HttpResponse (b'error ', 504)' (ou quelque chose de similaire). –

+0

Salut sans cadre, juste "à partir de SimpleXMLRPCServer importer SimpleXMLRPCServer" – aw88

+0

Très bien. Alors, pourquoi simuler le comportement HTTP? Curieuse. –

Répondre

0

Voici comment vous pouvez simuler une erreur 504 avec Flask:

from flask import Flask, abort 

app = Flask(__name__) 


@app.route("/") 
def fake_gateway_timeout_error(): 
    abort(504) 


if __name__ == "__main__": 
    app.run(port=8000, debug=True) 

Si vous essayez http://127.0.0.1:8000/ avec votre navigateur, vous obtiendrez:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 
<title>504 Gateway Timeout</title> 
<h1>Gateway Timeout</h1> 
<p>The connection to an upstream server timed out.</p> 

Avec l'état de sortie = 504.

Bien sûr, si vous voulez un message différent (texte au lieu de HTML), vous pouvez essayer:

@app.route("/") 
def fake_gateway_timeout_error(): 
    return b'504 Gateway Timeout', 504 
+0

Salut, j'ai essayé votre solution mais je reçois une méthode d'erreur 405 non autorisée, comment forcer l'erreur 504 – aw88

+0

Par défaut, il n'accepte que la méthode GET. Vous pouvez changer cela dans la méthode/décorateur 'app.route'. Si je me souviens bien, il a un paramètre 'methods'. Vérifiez la documentation. –

+0

hey donc ça marche! J'utilise f = urllib2.urlopen ("http://127.0.0.1:8000/") .read() print f Cependant, comment accéder au message "504 Gateway Timeout". Si je devais changer pour "vous venez de rencontrer un timeout de passerelle 504" – aw88