Archivo YAML url y script en python GAE

Estoy usando Python 2.7 en Google App Engine y parece que no puedo configurar mi archivo app.yaml correctamente.

Mi objective es que si voy a http://localhost/carlos/ obtengo un carlos.py ejecutado

Aquí está mi estructura de directorio:

 app\ \app.yaml \main.py \carlos.py 

Aquí está mi archivo actual app.yaml:

 application: myapp version: 1 runtime: python27 api_version: 1 threadsafe: yes handlers: - url: /carlos/.* script: carlos.app - url: .* script: main.app 

y mi archivo carlos.py es:

 import webapp2 class MainHandler(webapp2.RequestHandler): def get(self): self.response.out.write("Hello, Carlos!") app = webapp2.WSGIApplication([('/carlos', MainHandler)], debug=True) 

Sin embargo, todo lo que estoy obteniendo ahora es un error 404 No encontrado. ¿Alguna idea?

Pude determinar la solución y pensé que la publicaría para cualquier persona.

En mi archivo carlos.py necesitaba reemplazar:

 app = webapp2.WSGIApplication([('/', MainHandler)], debug=True) 

con

 app = webapp2.WSGIApplication([('/carlos/', MainHandler)], debug=True) 

Parece que el primer argumento para la aplicación WSGIA se refiere a la ruta TOTAL de su dirección web raíz en lugar de la ruta INCREMENTAL desde la cual se dirigió originalmente.

Estoy seleccionando esta respuesta sobre lo que proporcionó Littm porque me gustaría seguir usando WSGI

Funcionó con las siguientes modificaciones:

1 – Reemplazando “carlos.app” por “carlos.py” y “main.app” por “main.py” en el archivo yaml.

2 – Agregue una barra (“/”) después de “/ carlos” en el archivo “carlos.py”.

3 – Agregue la siguiente parte del código al final de cada archivo de python (carlos.py y main.py)

 def main(): app.run() 

Aquí hay un ejemplo de archivos modificados:

app.yaml:

 application: myapp version: 1 runtime: python27 api_version: 1 threadsafe: no handlers: - url: /carlos/.* script: carlos.py - url: .* script: main.py 

carlos.py: import webapp2

 class MainHandler(webapp2.RequestHandler): def get(self): self.response.out.write("Hello, Carlos!") app = webapp2.WSGIApplication([('/carlos/', MainHandler)], debug=True) def main(): app.run() 

main.py:

 import webapp2 class MainHandler(webapp2.RequestHandler): def get(self): self.response.out.write("Hello, MAIN!") app = webapp2.WSGIApplication([('/', MainHandler)], debug=True) def main(): app.run() 

Puedes intentar navegar a:

localhost: 8080 / carlos / y localhost: 8080 / para ver los resultados

Espero eso ayude 😉