Python Servlet

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
da.dom
User
Beiträge: 114
Registriert: Dienstag 10. Juni 2008, 14:42

HuHu..

hab mich mal durch das Forum hier geklickt, aber eine einfache Antwort nicht dazu gefunden. Habe im WebBereich bisher, JSP, Struts, JSF, GWT gemacht. Bin schlussendlich bei GWT (JavaCode wird in JavasScript/Ajax übersetzt) ein wenig hängen geblieben. Mein Problem: RPC aufrufe / Servlet Aufrufe vom Clienten an den Server, enthalten serverseitig bei mir relativ wenig Code, welcher bisher in Java geschrieben war (ergo: Application Server nötig)

Kann man in Python "einfach" RPC/Servlet Aufrufe von einem Clienten verarbeiten (im Regelfall ein paar Strings zurückliefern aus ner Datenbank), sodass ich mit einem kostenlosen Serveranbieter im Web hinkomme (also will Python nur Serverseitig nutzen um Daten zurück zu geben). Geht so was "einfach" mit Python? Gibt es kostenlose Anbieter für so was?

Link zum Einlesen wäre fein (hab mich schon an einigen Infos versucht, aber ist etwas schwirig genau das für mich passende zu finden, ohne das ich mich mit einem "schweren" Framework überhebe :) )

Danke (mal wieder)
D
BlackJack

Ich hoffe ich habe die Frage nicht missverstanden, aber wenn Python auf dem Server nur für RPC verwendet werden soll, das von JavaScript aus angesprochen wird, sind die beiden einfachsten Möglichkeiten wohl XML-RPC (`xmlrpclib` in der Standardbibliothek) oder JSON-RPC. Zu letzterem bräuchte man ein externes Modul für's JSON. Ein einfacher Server sollte hier im Forum irgend wo zu finden sein.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

da.dom hat geschrieben:Kann man in Python "einfach" RPC/Servlet Aufrufe von einem Clienten verarbeiten (im Regelfall ein paar Strings zurückliefern aus ner Datenbank), sodass ich mit einem kostenlosen Serveranbieter im Web hinkomme (also will Python nur Serverseitig nutzen um Daten zurück zu geben). Geht so was "einfach" mit Python? Gibt es kostenlose Anbieter für so was?
Kostenlose sind mir nicht bekannt. Du kannst dir einweder einen normalen Hoster nehmen der Python via CGI anbietet oder zu Pyhosting kommen, wo du Python via FastCGI bekommst - ab 3€/Monat bist du dabei.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
da.dom
User
Beiträge: 114
Registriert: Dienstag 10. Juni 2008, 14:42

Hat jemand ein gutes Tutorial für Python + CGI parat? Kenne CGI bisher gar nicht, darum sind die Tutorials die ich bisher gefunden habe, die sich spezielle auf Python beziehen für mich ein wenig dünn... . Mir geht es da eher um die Grundlage: wir bringe ich meinen Server dazu eingehende Request mit meinem Python-Script zu beantworten? Welchen Server brauche ich (hab hier bisher nur einen GlassFish, aber von dem will ich ja ohenhin weg, weil einen Java App Server kostenlos wird es wohl nie geben :) )?

Wäre fein wenn da jemand ein wenig LeseStoff bei der Hand hat .

Danke
D
Zuletzt geändert von da.dom am Montag 23. Juni 2008, 12:50, insgesamt 1-mal geändert.
BlackJack

Such mal im Netz nur nach CGI. Die Schnittstelle ist ja sprachunabhängig. Und mit HTTP sollte man sich auch ein wenig auskennen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

da.dom hat geschrieben:Hat jemand ein gutes Tutorial für Python + CGI parat?
Wenn du meinen Rat hören willst: vergiss CGI, das ist wie auf ein totes Pferd setzen. Stattdessen solltest du dich besser mit WSGI oder einem Framework auseinandersetzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
da.dom
User
Beiträge: 114
Registriert: Dienstag 10. Juni 2008, 14:42

Leonidas hat geschrieben:Wenn du meinen Rat hören willst: vergiss CGI, das ist wie auf ein totes Pferd setzen. Stattdessen solltest du dich besser mit WSGI oder einem Framework auseinandersetzen.
Das werde ich wohl über kurz über lang auch wohl tuen, aber da ich gerade erst mit Python anfange (und eigentlich noch gar nicht in die WebEntwicklung gehen wollte, sondern erst mal mein Buch weiter lesen wollte...aber jetzt doch wieder so halb am basteln bin...), würde ich schon gerne, gerade am Anfang mich mit den Grundlagen vertraut machen und erst mal mit der älteren Technologie anfangen bevor ich mich dann auf ein Framwork stürze (im Hinblick auf Webspace, habe ich auch einige wenige kostenlose Anbieter für CGI + Python gefunden, für die Frameworks werde ich ja sicherlich zusatzinstallationen auf dem Webspae brauchen die ich nicht durchführen kann?!)... also keine Angst mein Erspartes setze ich nicht :)
da.dom
User
Beiträge: 114
Registriert: Dienstag 10. Juni 2008, 14:42

Und weil ich alleine scheinbar nirgendwo weiter komme, gleich mal ein Problem :)

Code: Alles auswählen

#!C:/Java/Python/python.exe

import cgi
import urllib
import cgitb; cgitb.enable()

request=cgi.FieldStorage()
search=request["searchKey"].value
response=urllib.urlopen("http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=GWT-Book&output=json&query="+str(search));


print "Content-type: text/plain\n\n"
print response.read()

habe ich anhand eines Tutorials/API das ich gefunden habe gebaut.
Leider will das ganze nicht :)

Fehler in:
search=request["searchKey"].value


builtin TypeError = <type 'exceptions.TypeError'>

<type 'exceptions.TypeError'>: not indexable
args = ('not indexable',)
message = 'not indexable'
da.dom
User
Beiträge: 114
Registriert: Dienstag 10. Juni 2008, 14:42

Ich hab jetzt noch mal ein wenig rum probiert, aber irgendwie klappt hier gar nichts :( .

Auf Client Seite packe ich ein JSON Objekt, das ich zum Clienten übertrage, da kommt so was an:

hier mal ein Ausschnitt aus dem Clienten:

(habs hier mal mit json=... probiert, ohne gehts auch nicht)
sendRequest("json="+jsonObject.....

Server:

Code: Alles auswählen

print cgi.FieldStorage()
>> FieldStorage(None, None, 'json={"searchKey":"DD", "maxResults":5}')
sieht für mich richtig aus? Wenn ich dem ganzen aber wie gesagt zur Leibe Rücken will, und das Json Element haben will behauptet er:

<type 'exceptions.TypeError'>: not indexable
args = ('not indexable',)
message = 'not indexable'
BlackJack

Das `FieldStorage` scheint schon ein einzelner Wert zu sein. Sonst sieht dass nämlich eher so aus:

FieldStorage(None, None, [MiniFieldStorage('test', '42')])

Greif mal auf das `value`-Attribut zu.
Antworten