2011-10-30 7 views
10

Sto migrando la mia app gae a python 2.7. Questo è il mio nuovo app.yaml:Come migrare la mia 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 

Ma ottengo questo messaggio di errore:

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

Potete dirmi come risolvere l'errore?

risposta

7

Controllo del source code, sembra che è necessario definire il percorso i gestori, senza alcuna 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) 

Spostare application.py alla radice del vostro progetto e modificare il percorso del conduttore di conseguenza.

+0

Grazie è vero che potevo semplicemente omettere la parte mapreduce dal momento che non la sto usando al momento. Ora aggiornamento ha superato il controllo della sintassi e sono curioso di vedere cosa è successo ora che ho appena eseguito 'set_default_version' –

+7

o chiamarlo' mapreduce.main.application'. –

+0

Grazie @Nick Johnson per la soluzione completa. Potrei migrare l'intera app a python 2.7 con un piccolo sforzo :-) –

7

Cambio:

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

A:

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

Potrebbe anche essere necessario aggiungere un __init__.py alla cartella 'MapReduce' se uno non esiste c'è già. Questo renderà il python interpretare la cartella come un modulo.

+0

Ho provato l'ultima versione e sembra essere passata dall'applicazione all'APP – wonglik

+0

@wonglik Da "ultima versione" che sarebbe la versione. Sto eseguendo v.1.7.0 dell'SDK e la modifica di "applicazione" in "app" genera un errore 500 (server). –

+0

Siamo spiacenti. Intendevo l'ultima versione di MapReduce Bundle - 1.6.2 presa da qui https://developers.google.com/appengine/downloads – wonglik