CherryPy und die Google App Engine!

Code-Stücke können hier veröffentlicht werden.
Antworten
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Grade ausprobiert, funktioniert prima! Nur eine kleine Einleitung...

Wie gehen wir am besten vor? Ich hab zuerst'n Ordner erstellt und ihn Google App Engine genannt, anschließend dies alles in den Ordner heruntergeladen:

google_appengine_1.1.0.zip
CherryPy-3.1.0.zip

Nun erstell ich noch'n Ordner und nenn ihn helloworld (er muss später den Namen deiner Applikation tragen... Du trägst sie beim Anmelden bei der Google App Engine ein. Das machst hier) So... nun entpacken wir das Google App Engine SDK und entpacken CherryPy in dem Ordner helloworld. Nun sieht die Struktur ungefähr so aus...

Code: Alles auswählen

Google App Engine
|
|-google_appengine
|  |-appcfg.py
|  |-...
|
|-helloworld
|  |-cherrpy
|  |  |-...
|  |-...
in den Ordner helloworld erstellen wir eine app.yaml, die so zum Beispiel aussieht

Code: Alles auswählen

application: helloworld 
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
  script: helloworld.py
Bei application sollte nachher der Name stehen, den ihr unter http://appengine.google.com/ eingetragen habt stehen. Nun ein Beispielskript das CherryPy benutzt und mit der Google App Engine kombatibel ist:

Code: Alles auswählen

import wsgiref.handlers
import cherrypy

class HelloWorld(object):
    def index(self, name="World"):
        return "Hello %s!" % (name)
    index.exposed = True
    
if __name__ == "__main__":
    application = cherrypy.Application(HelloWorld())
    wsgiref.handlers.CGIHandler().run(application)
Was das genau bedeutet... nun, man kann sich ja mit CherryPy beschäftigen, dann weiß man es :3 So, mit'r bash oder mit cmd oder was auch immer navigiert man nun in den Ordner und kann nun mit

Code: Alles auswählen

google_appengine\dev_appserver.py helloworld\
einen Testserver starten, denn man mit http://localhost:8080 anwählen kann... und mit

Code: Alles auswählen

google_appengine\appcfg.py update helloworld\
kann man nun die Applikation halt hochladen! Und mit http://application-name.appspot.de kann man sie aufrufen. Das Beispielskript läuft momentan unter http://vivi.appspot.com/ ... Ich hoffe ich konnte helfen. Noch ein paar URLs, die helfen:

http://code.google.com/appengine/docs/
http://cherrypy.org/
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Kleines Beispiel um den Google Datastore zu benutzen...

counter.py
counter.html

Ist'n ganz simples Beispiel... Vielleicht auch zu kompliziert, aber man darf bei der Google Appengine keine Dateien im Schreibmodus öffnen auf dem Server, deswegen muss man wohl den Datastore benutzen :3 Ist aber auch nich so schwer damit zu arbeiten, wirklich...
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Dein Counter ist aber nicht transaktionssicher. Du musst eine explizite Transaktion benutzen, in der du den Wert lädst, erhöhst und wieder abspeicherst.

Stefan
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

sma hat geschrieben:Dein Counter ist aber nicht transaktionssicher. Du musst eine explizite Transaktion benutzen, in der du den Wert lädst, erhöhst und wieder abspeicherst.

Stefan
Meine Kenntnisse in Datenbanken sind eher ... klein, deswegen frage ich... Meinst du damit, dass ich aus'r Datenbank die Daten lese, in 2 Variablen packe, die beiden Variablen erhöhe, den Datensatz wieder lese und es dann da reinschreibe?....

Also:

Aus Datenbank in Variablen und Verbindung zur Datenbank "schließen"
Variablen erhöhen
Datenbank zugreifen und Datensatz verändern

Ist das so richtig?... Was passiert, wenn ich das nicht mache?
Antworten