6

Ich bin ein Anfänger auf Google App Engine, sowie Web-Entwicklung in Python. Nachdem ich eine kleine Python-basierte App erstellt habe, habe ich in den letzten 6 Tagen versucht, sie auf GAE hochzuladen. Die Datei "app.yaml" gibt den folgenden Fehler an.Google App Engine | Python | APP.YAML

app.yaml (AKTUALISIERT)

application: web2py 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: false 

default_expiration: "24h" 

handlers: 
- url: /(?P<a>.+?)/static/(?P<b>.+) 
    static_files: applications/\1/static/\2 
    upload: applications/(.+?)/static/(.+) 
    secure: optional 

- url: /favicon.ico 
    static_files: applications/welcome/static/favicon.ico 
    upload: applications/welcome/static/favicon.ico 

- url: /robots.txt 
    static_files: applications/welcome/static/robots.txt 
    upload: applications/welcome/static/robots.txt 

- url: .* 
# script: gaehandler.py   # CGI 
# script: web2py.app # ? 
    script: gaehandler.wsgiapp # WSGI (Python 2.7 only) 
    secure: optional 

admin_console: 
    pages: 
    - name: Appstats 
    url: /_ah/stats 

skip_files: | 
^(.*/)?(
(app\.yaml)| 
(app\.yml)| 
(index\.yaml)| 
(index\.yml)| 
(#.*#)| 
(.*~)| 
(.*\.py[co])| 
(.*/RCS/.*)| 
(\..*)| 
(applications/(admin|examples)/.*)| 
((admin|examples)\.(w2p|tar))| 
(applications/.*?/(cron|databases|errors|cache|sessions)/.*)| 
((logs|scripts)/.*)| 
(anyserver\.py)| 
(web2py\.py)| 
((cgi|fcgi|modpython|wsgi)handler\.py)| 
(epydoc\.(conf|css))| 
(httpserver\.log)| 
(logging\.example\.conf)| 
(route[rs]\.example\.py)| 
(setup_(app|exe)\.py)| 
(splashlogo\.gif)| 
(parameters_\d+\.py)| 
(options_std.py)| 
(gluon/tests/.*)| 
(gluon/(rocket|winservice)\.py)| 
(contrib/(gateways|markdown|memcache|pymysql)/.*)| 
(contrib/(populate|taskbar_widget)\.py)| 
(google_appengine/.*)| 
(.*\.(bak|orig))| 
)$ 

builtins: 
- remote_api: on 
- appstats: on 
- admin_redirect: on 
- deferred: on 

Google App Engine, während Python 2.7.3 gibt den folgenden Fehlern

YAML ERROR auf GAE

*** Running dev_appserver with the following flags: 
    --admin_console_server= --port=8080 --use_sqlite 
Python command: /usr/local/bin/python2.7 
ERROR 2012-11-22 05:24:13,142 dev_appserver_main.py:626] Fatal error when loading application configuration: 
mapping values are not allowed here 
    in "/Applications/+++WWW+++/GAE/gae3web2py/app.yaml", line 9, column 9 

Wenn mir jemand helfen kann, werde ich sein sehr dankbar, besonders an diesem Tag des amerikanischen "Thanksgiving"! ;-)


Die "app.yaml" aktualisierte Datei wurde mit dem Abstand aktualisiert, wie vorgeschlagen. Aber es gibt immer noch denselben Fehler.

versuchte ich es auch hier, wo es die gleichen Fehler gibt: Link>http://yaml-online-parser.appspot.com/

Antwort

1

Wenn Ihr app.yaml konfigurieren, müssen Sie mit Leerzeichen alle Parameter von ihren Werten trennen (so sollte application:web2pyapplication: web2py sein, usw.). Versuchen Sie, ein Leerzeichen nach den Doppelpunkten einzufügen (speziell nach diesem: url:/(?P<a>.+?)/static/(?P<b>.+)) und sehen Sie, ob das den Fehler behebt.

+0

Danke, lieber RocketDonkey! Ich habe versucht, Ihre Vorschläge und aktualisiert die Datei, aber immer noch die Fehler wie oben angegeben. PS: Du hast einen sehr lustigen Namen. Ich versuche mir das vorzustellen. ;-) –

+1

@zZz Kein Problem - erhalten Sie immer noch denselben Fehler? Einfügen Ihrer yaml in Parser Sie verlinkt scheint gut zu funktionieren, so glücklich zu helfen, weiter zu debuggen, wenn nötig :) – RocketDonkey

+0

Lieber RocketDonkey, Vielen Dank für die freundliche Hilfe. Ich probiere immer noch die GAE und das Python-Framework aus, und ich werde Sie auf jeden Fall darüber auf dem Laufenden halten, wie sich die Dinge entwickeln und entwickeln. –

1

Es ist ein Problem mit Ihrer YAML Syntax. Wenn Sie jemals über die Syntax verwirrt sind, you can find the spec here..

Aus dem Bereich 2.1 - Kollektionen: jeder Eintrag in einer eigenen Zeile

Sammlungen YAML-Block verwenden Vertiefung für Umfang und beginnen. Blocksequenzen zeigen jeden Eintrag mit einem Bindestrich und einem Leerzeichen an ("-"). Mappings verwenden einen Doppelpunkt und ein Leerzeichen (":"), um jedes Schlüssel: Wert-Paar zu markieren. Kommentare beginnen mit einem Oktothorpe (auch "Hash", "Scharf", "Pfund" oder "Nummernzeichen" - "#" genannt).

+0

Danke, lieber Aesthete! Ich habe die obigen Vorschläge von RocketDonkey ausprobiert und die Datei aktualisiert, aber immer noch die Fehler wie oben angegeben. Ich bezog mich auf die Information, die Sie bei diesem Link gaben, und wenn ich alles das lernen könnte, wäre ich kein Neuling mit diesen albernen Zweifeln über Abstand gewesen !!! ;-) –

1

versuchen, alle nachfolgenden Raum entfernen, nachdem :
Das ist für mich gearbeitet, obwohl es in meinem app.yaml einige andere Fehler waren, die ich noch nicht korrigiert.

0

Ich bin mir nicht sicher, was Google GAE verwendet, um die YAML-Datei zu interpretieren, aber für PyYAML ist diese Datei nicht akzeptabel, da \ im Wert für static_files.

Dies ist auch die 9. Zeile der Datei (ohne Leerzeilen). Also würde ich damit beginnen, diese Werte zu entkommen.

Bitte beachten Sie, dass http://yaml-online-parser.appspot.com/ jetzt nur Ihr Beispiel analysiert, aber es scheinbar das \1 in '\ 2' konvertiert, bevor die Daten aus dem Textfeld an PyYAML übergeben werden.