[pyar] Duda sobre implementación de BaseHTTPRequestHandler

Eliseo Ocampos roskoff en gmail.com
Mar Mayo 28 02:04:06 ART 2013


Buenas noches gente,

   Estuve trabajando con un script que debe simular a cierto servidor web,
básicamente tiene que recibir una petición (cualquiera) y retornar un
archivo cifrado. Intenté hacerlo así y funciona:

class HttpHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Access-Control-Allow-Origin', '*')
        self.send_header('Access-Control-Allow-Headers', 'X-Request,
X-Requested-With')
        self.send_header('Content-type', 'application/octet-stream')
        self.end_headers()
        encrypted_config = self.cifrar_configuracion()
        self.wfile.write(encrypted_config)

    def cifrar_configuracion(self):
        # String de configuracion que se cifra y se retorna

def main():
    try:
        server = HTTPServer(('127.0.0.1', 8000), HttpHandler)
        print("Servidor corriendo en: 127.0.0.1:8000")
        server.serve_forever()
    except KeyboardInterrupt:
        server.socket.close()

if __name__ == '__main__':
    main()

Mis problemas surgieron cuando quise hacer esto "parametrizable": pasar un
argumento posicional al script (nombre del archivo que contiene el texto de
configuración), para lo cual intenté definir __init__(self, filename)
dentro de la clase HttpHandler, de manera a instanciar el servidor así:
server = HTTPServer(('127.0.0.1', 8000), HttpHandler("config.txt")

Este fue mi razonamiento obvio, pero luego me surgió el siguiente error:
TypeError: 'HttpHandler' object is not callable

Por qué no puedo usar __init__ para inicializar la clase con un parámetro
que necesito? También intenté llamar a super() pero dice que requiere las
variables request, client_address y server.

Como no di con una solución resolví parsear el path del handler buscando el
nombre del archivo específico, sin embargo, me quedé con la duda de este
detalle de implementación.

Saludos!
Eliseo.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130528/53fe0b27/attachment.html>


More information about the pyar mailing list