[Python-de] letzte Rettung

Christian Tanzer tanzer at swing.co.at
Fri May 11 08:50:52 EDT 2001


Ralf Geschke <ralf at kuerbis.org> schrieb:

> > Dann verstehe ich natuerlich dein Problem.
> > Wenn es dir wirklich nur um's "glauben" geht, dann koennen
> > wir dir hier aber auch nicht helfen!
> > 
> > Anstelle einer weitergehenden Erklaerung, die du wie die
> > bisherigen wahrscheinlich ja auch nur ignorieren wuerdest,
> > empfehle ich einfach: "read the source, luke"!
> 
> Das waere mir jetzt ein wenig zu aufwendig. Ich kann mir
> aber nun auch nicht vorstellen, dass niemand von der 
> auf dieser Liste versammelten Expertenschaft eine gute Quelle
> nennen kann, in der klar und deutlich steht, wie und wodurch die
> angebliche Persistenz erreicht werden soll. 

Du hast diese Erklärung bereits bekommen, wolltest sie aber nicht
akzeptieren, weil sie nicht zu Deinem Vorurteil paßt, wie Python
funktioniert.

> Ok, die "Application" sei Apache mitsamt mod_python. 
> Hilft das? Nein. Noch immer heisst es: User sendet Request,
> Python-Skript wird vom im Apache verbackenen Python-Interpreter
> verarbeitet, Skript wird beendet, User sieht HTML. 
> 
> Es geht doch nicht um den Python-Interpreter, sondern das 
> Python-Skript! Kann dieses auf eine persistente Datenbank-
> Verbindung (die von mod_python "vermittelt" wuerde) 
> zurueckgreifen? 

Noch einmal von vorne:

- Das Python Statement `import spam' liest das Modul spam.py (bzw.
  spam/__init__.py, wenn es sich um ein Package handelt) genau einmal
  pro Interpreter-Sitzung von der Platte. Der Interpreter verwaltet
  die geladenen Module im Dictionary `sys.modules'.

- Wenn in der gleichen Sitzung irgendwo anders im Code ein zweitesmal
  `import spam' exekutiert wird, wird das bereits geladene Modul
  (`sys.modules ["spam"]') verwendet.

- Wenn ein von mod_python ausgeführtes Skript also
  `import persistent_db_connection' ausführt und das Modul
  `persistent_db_connection' eine Verbindung zur Datenbank öffnet,
  dann passiert das genau einmal -- beim ersten Import.

- Alle weiteren Importe greifen auf die bereits existierende
  Verbindung zu.

- Da das, was Du Python-Skript nennst, immer wieder im gleichen
  Interpreter läuft (außer Apache wird neu gestartet :), zählt die
  Persistenz des Python-Interpreters, nicht die des Skripts.

Wenn Du genauer verstehen willst, wie die Details funktionieren, wirst
Du um das Lesen der Python (*nicht* mod_python) Dokumentation nicht
herumkommen.

> Um von PHP auszugehen (wobei ich behaupte, dass das Verfahren der
> Einbindung in den Apache bei mod_php und mod_python nahezu identisch
> ist), schau' Dir doch mal
> http://www.phpcenter.de/de-html-manual/features.persistent-connections.html
> an.

Die Art der Einbindung in den Apache ist hier irrelevant. Es geht um
die Import-Semantik der Sprache. Nach Deiner Beschreibung würde ich
vermuten, daß PHP hier C ähnelt und nicht Python.

Das erklärt auch, warum Du in der mod_python Dokumentation nichts über
`Persistenz' gefunden hast -- das ist für jedermann mit
Pythonerfahrung selbstverständlich und daher nicht erwähnenswert. Wenn
Du Python noch nicht kennst, tätest Du aber gut daran, das Python
Tutorial und danach das Reference Manual zu lesen, bevor Du Meldungen
wie

    Du kannst Deine Behauptung gerne beweisen, wie erwaehnt, im
    mod_python-Manual ist mir keine einzige Stelle untergekommen, die
    sich der Persistenz gewidmet haette. Und dass diese ohne weitere
    Zauberei per se vorhanden ist, glaube ich nun wiederum nicht.

von Dir gibst.

Aller-Anfang-ist-schwer,
Christian

-- 
Christian Tanzer                                         tanzer at swing.co.at
Glasauergasse 32                                       Tel: +43 1 876 62 36
A-1130 Vienna, Austria                                 Fax: +43 1 877 66 92




More information about the Python-de mailing list