2017-01-10 4 views
0

Я пытаюсь смоделировать ошибку протокола 504 время ожидания шлюза. Это мой код сервера. Я хотел бы вернуть ошибку 504 в методе add().Python Simulate 504 Ошибка таймаута шлюза

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() 

Заранее благодарю вас за ваше время.

+0

Какая конструкция? Джанго? Колба? В общем, все, что вам нужно, это добавить код выхода в ответ, например: 'return HttpResponse (b'error ', 504)' (или что-то подобное). –

+0

Привет, нет рамки, просто «от SimpleXMLRPCServer import SimpleXMLRPCServer» – aw88

+0

Хорошо. Итак, зачем имитировать поведение HTTP? Любопытно. –

ответ

0

Вот как вы можете имитировать ошибку 504 с 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) 

Если вы пытаетесь http://127.0.0.1:8000/ с вашим браузером, вы получите:

<!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> 

С статусом выхода = 504.

Конечно, если вы хотите другое сообщение (текст вместо HTML), вы можете попробовать:

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

Привет, я пробовал ваше решение, но я получаю метод ошибки 405, который не разрешен, как заставить 504 ошибку – aw88

+0

По умолчанию он принимает только метод GET. Вы можете изменить это в методе 'app.route'/decorator. Если я правильно помню, у него есть параметр 'methods'. Проверьте документацию. –

+0

эй так работает! Я использую f = urllib2.urlopen («http://127.0.0.1:8000/») .read() print f Однако, как мне получить доступ к сообщению «504 Gateway Timeout». Если бы я изменил его на «вы только что столкнулись с таймаутом 504 шлюза», – aw88

Смежные вопросы