Einfachste Onlinestellung eines Scriptes

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Leonidas hat geschrieben:
Sr4l hat geschrieben:[wiki]Web-Skripte zum Laufen bringen[/wiki]
Das Problem dieser Seite ist, dass sie stark auf Apache oder zumindest auf Unices zentriert ist. Ich tippe darauf dass du IIS nutzt - am besten du wendest dich an den entsprechenden Support, da hier im Forum die Anzahl der User die IIS betreiben wohl eher gering ist.
Aber das von thelittlebug gepostete Tutorial sollte doch einfach nachzuvollziehen sein..
Das war es auch. Aber wie bereits gepostet hat es NULL gebracht.
Und das schlimmste für mich ist ja das er keinen vernünftigen Fehler ausgibt sondern immer nur 404 als wenn es die Datei nicht gäbe.
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Also der Link: Web-Skripte zum Laufen bringen hat mir echt geholfen.
Ich bin jetzt soweit das er die Scripte ausführt.
Allerdings nur wenn ich auf die "Notlösung" zurückgreife und das .py Script in .cgi umbenenne.
Soweit so gut erstmal mit dieser Notlösung kann ich leben.

Jetzt muss ich es aber noch schaffen das Script (was bislang nur im Dosfenster läuft) so laufen zu lassen, daß es auch im Web funktioniert.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Leonidas hat geschrieben:
Sr4l hat geschrieben:[wiki]Web-Skripte zum Laufen bringen[/wiki]
Das Problem dieser Seite ist, dass sie stark auf Apache oder zumindest auf Unices zentriert ist. Ich tippe darauf dass du IIS nutzt - am besten du wendest dich an den entsprechenden Support, da hier im Forum die Anzahl der User die IIS betreiben wohl eher gering ist.
Aber das von thelittlebug gepostete Tutorial sollte doch einfach nachzuvollziehen sein..
Das ist das Problem das schreib nie einer was er nutzt. Ich gehe immer von LAMP Sytem mit Debian aus ;-)

@Boby schön wenn nun geht kannst dich ja nach einigem Testen wieder melden.
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Das werde ich tuen.
;)
Ich bastel jetz mal hin und her und wenn ich es mal wieder nicht schaffe, dann belästige ich euch wieder ;)

Und DANKE nochmals für eure Hilfe!

Ohne euch hätte ich Python warscheinlich schon aufgegeben.
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Was ist die arbeitsumgebung Idle doch schön. Man macht was und es klappt oder gibt eine Fehlermeldung.
Im Web gibt es diesen Service leider nicht.
Habe das Script mal unverändert reingestellt: http://paste.pocoo.org/show/1509/

Im Webscript ist oben noch:

Code: Alles auswählen

#!C:\python24\python.exe
# -*- coding: UTF-8 -*-
Und wollte mal sehen was passiert. Aber er lädt sich nur nen Wolf statt das Script auszuführen.

Dadurch das ich nun keinen Fehler bekomme, macht sich das auch recht schwer mit dem Rumprobieren.

Ich weiß ich nerve und verlange viel, aber kann mir BITTE BITTE BITTE einer das Script so modifizieren das es in einfachster Form im Web lauffähig ist?
Danke schonmal an alle die sich die Mühe machen es zu versuchen!
BlackJack

Da solltest Du Dich vielleicht erst einmal mit CGI beschäftigen wenn das über einen Webserver laufen soll. Da hast Du keine Ein- und Ausgabe wo man so einfach mit dem Benutzer kommunizieren kann. Ausserdem musst Du mit Cookies oder Session-IDs arbeiten, wenn Du Informationen wie `nett` über mehrere Aufrufe erhalten möchtest.
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

BlackJack hat geschrieben:Da solltest Du Dich vielleicht erst einmal mit CGI beschäftigen wenn das über einen Webserver laufen soll. Da hast Du keine Ein- und Ausgabe wo man so einfach mit dem Benutzer kommunizieren kann. Ausserdem musst Du mit Cookies oder Session-IDs arbeiten, wenn Du Informationen wie `nett` über mehrere Aufrufe erhalten möchtest.
Ich finde das ja gut das du gleich weiter denkst, aber ich versuche das nur so leicht wie möglich hin zu bekommen! Eingabefeld, Ausgabe Fenster, fertig.
Also nur so, daß man mit dem Bot spricht und wenn man fertig ist geht. Der soll sich noch nichts merker, ausser dem was er gefragt wurde(das macht er ja schon) und beim nächsten Besuch(er) soll er einfach wieder von vorne starten.
BlackJack

Ich denke nicht wirklich weiter. Wie Du sagst merkt sich Dein Bot schon etwas. Bei einem CGI-Aufruf, d.h. *einem* Start des Skriptes, bekommt man aber nur *eine* Eingabe vom Benutzer und kann nur *eine* Ausgabe machen. Wechselseitige Kommunikation geht damit also über mehrere Aufrufe und nicht in einem Programmablauf mit abwechelndem `raw_input()` und ``print``.

CGI ist wie Webseiten, der Benutzer ruft eine URL auf und bekommt eine Antwort. Der einzige Unterschied ist, dass die Antwort bei CGI nicht aus einer statischen Datei, sondern aus einem Programm kommt.
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

BlackJack hat geschrieben:Ich denke nicht wirklich weiter. Wie Du sagst merkt sich Dein Bot schon etwas. Bei einem CGI-Aufruf, d.h. *einem* Start des Skriptes, bekommt man aber nur *eine* Eingabe vom Benutzer und kann nur *eine* Ausgabe machen. Wechselseitige Kommunikation geht damit also über mehrere Aufrufe und nicht in einem Programmablauf mit abwechelndem `raw_input()` und ``print``.

CGI ist wie Webseiten, der Benutzer ruft eine URL auf und bekommt eine Antwort. Der einzige Unterschied ist, dass die Antwort bei CGI nicht aus einer statischen Datei, sondern aus einem Programm kommt.
Also ich habe hier mal ein kleines Chatscript:
http://paste.pocoo.org/show/1510/
So in etwa habe ich mir das vorgestellt. Nur soll ebend mein Chatpartner der Bot sein und selber antworten.
Das Chatscript greift ja auch auf eine .txt Datei zu ähnlich dem Bot. Also insoweit müsste es doch gehen.

Ps. Das chatscript funktioniert leider auch nicht fehlerfrei... Aber zur veranschaulichung sollte es reichen.
thelittlebug
User
Beiträge: 188
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

Ich muss BlackJack recht geben. Es fehlt an Grundlagen. Woher soll der "Bot" erkennen welcher User welcher ist und wo hat er für jeden das eigene "Gespräch gespeichert" ? Spätestens jetzt solltest du erkennen das die Ratschläge von Blackjack vielleicht bißchen nach "Overkill" klingen aber garantiert richtig sind.

Bei CGI wird bei jedem Aufruf das Programm neu gestart. Lebe damit. Lerne damit umzugehen. Fang vielleicht kleiner an ;)

Ich kann mich noch gut daran erinnern wie ich 2000 mit PHP begonnen habe. Mein erstes Script war ein dummer Counter. Das 2te war streetbattle :D
Mach auch zuerst mal einen Counter. Probier dich daran und versuche zu verstehen was da vor sich geht.

lgherby

edit: du meintest es geht nur wenn du die Python Dateien in *.cgi umbenennst. Dann scheinst du wichtige Schritte bei der Serverkonfiguration ausgelassen zu haben. Der Fehler liegt nicht an Python. Lerne deinen Webserver kennen.

p.s. schalt nen gang zurück und machs langsam und ordentlich ;)
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Ich verstehe euere Bedenken und ich verstehe eure Gründe, aber ihr scheint mich nicht zu verstehen. Ich möchte nicht das er jeden User erkennt. Ich möchte nicht das der Bot individuell ist. Ich möchte nur, daß das was zur Zeit auf meinem Rechner in der Idle oder als .exe auf anderen Rechner gut läuft auch im Web funktioniert!
Ich möchte nichts aufwendiges oder tolles! Ich will nur das kleine Script im Web laufen haben.
Und versucht mich bitte nicht wieder zur Vernunft zu bringen. Ich habe auch den dummen Server nur noch 3 Monate. Dann sind wir Pleite. Aber diese drei Monate möchte ich gerne den chatbot im Web laufen haben.
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Ich hab ja mit Python noch keine Weberfahrung, aber ich bezweifle ja stark, dass das im Web mit raw_input funktioniert. Ohne Dich zur Vernunft bringen zu wollen: ich glaube Du hast ein paar grundlegende Dinge der Webentwicklung noch nicht verstanden oder einfach noch nicht gehört. Z.B. wie die Kommunikation zwischen Client und Server funktioniert, dass IP ein verbindungsloses Protokoll ist und was genau ein Webserver macht (und was er nicht macht). Siehst Du, das Script läuft auf Deinem Rechner. Was Du aber überhaupt nicht behandelst ist die Kommunikation zwischen einem Rechner (auf dem das Script läuft) und einem anderen (auf dem der Browser läuft).

Korrigier mich jemand wenn ich falsch liege. Hab nur sehr kurz über das Script geschaut.
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Beruhigt es dich wenn ich dir sage, daß ich eine HTML Script habe, daß aufgrunt von INPUT Befehlen, und den dazugehörigen zuweisungen mit meinem Python script komuniziert?
Ich verstehe schon etwas vom Web und allem was dazu gehört. Mein Problem ist das ich ebend nicht alles weiß! Und weil ich alles was ich NICHT weiß hier frage wirkt das auf euch natürlich viel.
Ich bin mir auch im klaren, daß das Script so wie es zur Zeit ist nicht funktioniert. (Die Sache mit dem ich habe es mal so wie es ist gelassen und probiert war lediglich ein test um zu sehen was denn nun Passiert oder auch nicht)
Ich brauche also jemande der so freundlich ist und mir dasscript umschreibt. Denn ich kann es nicht und alle anderen wollen es nicht ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

N317V hat geschrieben:dass IP ein verbindungsloses Protokoll ist
Du meintest sicher HTTP, denn IP kennt ja durchaus Verbindungen. Eigentlich ist HTTP ja auch nicht verbindungslos, ich würde es eher als "stateless" bezeichnen.

Boby666666: Ich könnts mir mal ansehen, müsste aber erstmal die Konfiguration etwas modifizieren. Also wenn ich heute Abend dazukomme, kann ich mal reinschauen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Leonidas hat geschrieben: Ich könnts mir mal ansehen, müsste aber erstmal die Konfiguration etwas modifizieren. Also wenn ich heute Abend dazukomme, kann ich mal reinschauen.
Das wäre total lieb von dir!!!

DANKE schonmal nur dafür das du es wenigstens versuchst.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Obwohl ich vielleicht irgendwo die Details zur Serverausstattung überlesen habe: Möglicherweise wäre die einfachste Lösung (wenn es denn *unbedingt* über's Web laufen soll) direkt einen Python-HTTPD zu verwenden; sei es möglichst kompaktes WSGI oder was auf Basis des BaseHTTPServer(?) der Standard-Lib oder Karrigell - nachdem was ich gehört habe, ist letzteres ja eine recht einfache Möglichkeit, ein Python-Script ins Web zu bringen, ohne sich viel mit Deployment herumzuschlagen. Und einfach lokal zum Entwickeln und Testen ausführen kann man es dann auch.
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Y0Gi hat geschrieben:Obwohl ich vielleicht irgendwo die Details zur Serverausstattung überlesen habe: Möglicherweise wäre die einfachste Lösung (wenn es denn *unbedingt* über's Web laufen soll) direkt einen Python-HTTPD zu verwenden; sei es möglichst kompaktes WSGI oder was auf Basis des BaseHTTPServer(?) der Standard-Lib oder Karrigell - nachdem was ich gehört habe, ist letzteres ja eine recht einfache Möglichkeit, ein Python-Script ins Web zu bringen, ohne sich viel mit Deployment herumzuschlagen. Und einfach lokal zum Entwickeln und Testen ausführen kann man es dann auch.
Also davon habe ich jetzt mal kein Wort verstanden. Aber nur nochmal zur vervollständigung: http://strato.de/server/windows/index.html
Der für 69€, das ist meiner... noch...
BlackJack

Y0Gi meinte Du könntest auch mal einen Python-Webserver probieren. In der Standardbibliothek gibt es einen `BaseHTTPServer` auf dem einige recht kleine und einfach zu verwendende Webframeworks aufbauen die einfacher zu verwenden sind als CGI. Eines davon ist Karigell.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Boby666666 hat geschrieben:DANKE schonmal nur dafür das du es wenigstens versuchst.
Da, aber das ist eigentlich nur dein Script in dem ich alle Variablen umbenannt habe (eine Variable ``z``?!), die Funktionen umbenannt habe, das HTML ausgebessert habe (wenn man action leer lässt, muss man die URL nicht hartcoden, wenn man statt ``methode`` ``method`` schreibt, dann klappts auch mit den POST), die Struktur geändert habe, das sammeln von Exceptions etwas spezifischer gemacht habe und das Speicherformat geändert habe (ebenso die Anzeige-Funktion, die Linebreaks werden nun nur zum anzeigen eingefügt, nicht zum speichern) ist es mehr oder weniger brauchbar. Eher weniger, weil CGI eben recht garstig zu programmieren ist (die Tracebacks sind nicht so das wahre und bei SyntaxErrors bekommt man erst gar keine Tracebacks zu sehen).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Nunja, 500er durch Syntaxfehler muss man dann halt mal dezent vor dem Hochladen durch simples Kompilieren ausschließen (Strg+1 in SciTE, IIRC). Mit dem Modul ``cgitb`` (CGI Traceback) kann man dann Laufzeitfehler abfangen und entweder mit einer Fehlermeldung ("An error occured in a Python script." anstelle eines 500ers) oder einem recht hübschen Traceback (zum Debugging, natürlich nicht für den Produktiveinsatz) vorlieb nehmen.
Antworten