¿Cómo puedo obtener la IP del cliente de una solicitud Tornado?
Pregunta
Tengo un objeto RequestHandler
para post()
s entrantes. ¿Cómo puedo encontrar el IP del cliente que realiza la solicitud? He navegado por la mayoría de los métodos y propiedades de RequestHandler
y parecen tener perdido algo.
Solución
RequestHandler.request.remote_ip
(de ejemplo de RequestHandler)
Puede inspeccionar la respuesta como:
...
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write(repr(self.request))
...
Otros consejos
La respuesta de mykhal es correcto, sin embargo a veces la aplicación va a estar detrás de un proxy, por ejemplo si se utiliza nginx y UWSGI y siempre obtendrá algo así como 127.0.0.1
para la IP remota. En este caso es necesario comprobar las cabeceras también, como:
x_real_ip = self.request.headers.get("X-Real-IP")
remote_ip = x_real_ip or self.request.remote_ip
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow