2011-10-30 4 views
10

Je migre mon application gae vers python 2.7. Ceci est mon nouveau app.yaml:Comment migrer mon app.yaml vers 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 

Mais je reçois ce message d'erreur:

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

Pouvez-vous me dire comment résoudre l'erreur?

Répondre

7

Vérification de la source code, il semble que vous devez définir votre chemin sans barre oblique gestionnaires:

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) 

Déplacer application.py à la racine de votre projet et modifier le chemin du gestionnaire en conséquence.

+0

Merci, c'est vrai que je pourrais simplement omettre la partie mapreduce puisque je ne l'utilise pas pour le moment. Maintenant, la mise à jour a passé la vérification de syntaxe et je suis curieux de voir ce qui s'est passé maintenant que je viens de lancer 'set_default_version' –

+7

Ou nommez-le' mapreduce.main.application'. –

+0

Merci @Nick Johnson pour la solution complète. J'ai pu migrer toute l'application vers Python 2.7 avec un petit effort :-) –

7

Change:

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

Pour:

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

Vous pouvez aussi avoir besoin d'ajouter un __init__.py dans le dossier 'MapReduce' si l'on n'existe pas là déjà. Cela fera que le python interprétera le dossier comme un module.

+0

J'ai essayé la dernière version et il semble qu'il a changé de l'application à l'application – wonglik

+0

@wonglik Par «dernière version» qui la version serait-ce. Je cours v.1.7.0 du SDK et en changeant «application» en «app» jette une erreur 500 (serveur). –

+0

Désolé. Je voulais dire la dernière version de MapReduce Bundle - 1.6.2 prise d'ici https://developers.google.com/appengine/downloads – wonglik