2011-10-30 21 views
10

Estoy migrando mi aplicación gae a python 2.7. Este es mi nuevo app.yaml:¿Cómo migrar mi app.yaml a 2.7?

application: webfaze 
version: main 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /mapreduce(/.*)? 
    script: mapreduce/main.application 

- url: /(.*\.(html|css|js|gif|jpg|png|ico|swf)) 
    static_files: static/\1 
    upload: static/.* 
    expiration: "1d" 

- url: .* 
    script: main.application 

- url: /task/.* 
    script: main.application 
    login: admin 

pero me sale este mensaje de error:

Error parsing yaml file: 
Invalid object: 
threadsafe cannot be enabled with CGI handler: mapreduce/main.application 
    in "webfaze/app.yaml", line 22, column 1 

¿Me puede decir cómo resolver el error?

Respuesta

7

Comprobación del source code, se ve que es necesario definir ruta de sus manipuladores sin ninguna barra:

if (handler.script and (handler.script.endswith('.py') or 
     '/' in handler.script)): 
     raise appinfo_errors.ThreadsafeWithCgiHandler(
        'threadsafe cannot be enabled with CGI handler: %s' % 
        handler.script) 

Mover application.py a la raíz de su proyecto y modificar la ruta del controlador en consecuencia.

+0

Gracias es cierto que podría omitir la parte mapreduce ya que no la estoy usando en este momento. Ahora la actualización pasó la comprobación de sintaxis y tengo curiosidad por ver qué ha sucedido ahora que acabo de ejecutar 'set_default_version' –

+7

O denomínelo' mapreduce.main.application'. –

+0

Gracias @Nick Johnson por la solución completa. Podía migrar toda la aplicación a Python 2.7 con poco esfuerzo :-) –

7

Cambio:

- url: /mapreduce(/.*)? 
    script: mapreduce/main.application 

Para:

- url: /mapreduce(/.*)? 
    script: mapreduce.main.application 

También puede ser necesario añadir un __init__.py a la carpeta 'mapreduce' si no existe uno allí ya Eso hará que Python interprete la carpeta como un módulo.

+0

Intenté la última versión y parece que cambió de la aplicación a la APLICACIÓN – wonglik

+0

@wonglik Por 'última versión' que versión sería eso. Estoy ejecutando v.1.7.0 del SDK y cambiando 'aplicación' a 'aplicación' arroja un error de 500 (Servidor). –

+0

Lo siento. Quise decir la última versión de MapReduce Bundle - 1.6.2 tomada de aquí https://developers.google.com/appengine/downloads – wonglik