Hallo zusammen,
ich würde gerne Wissen, wie sich Django mit selbst gestarteten Threads verhält. Bei Java und einem Application-Server wie JBoss darf man aufgrund der darunterliegenden Prozesse und Dienste des Containers keine eigenen Threads starten. Wie sieht es bei Django und z.B. einem Apache aus. Darf ich für langwierige Aufgaben aus dem Django-Quellcode aus eigene Threads anstoßen?
Besten Dank und schönes Wochenende
Piet
Django: Darf man aus Django heraus eigene Threads starten
Ich würde das nicht empfehlen.
Zum einen bin ich mir relativ sicher, dass Django nicht threadsafe ist. Und selbst wenn es das wäre, was ist mit dem Datenbank-Treiber?
Zum anderen funktioniert Django ja nach dem CGI-Prinzip und in der Theorie lebt das Programm nur jeweils so lange, wie ein Request bearbeitet wird. Wenn mod_python oder mod_fcgi die Programme länger am Leben lassen, ist das nur eine Optimierung, aber nichts, auf das man sich verlassen kann.
Im Prinzip gilt somit das selbe wie bei Java.
Ich würde empfehlen, längerfristige Aufgaben in externe Programme auszulagern. Damit diese bequem über den Django-ORM auf die DB zugreifen können, bietet es sich an, hier custom commands zu bauen. Im Gegensatz zu Java gibt es dafür aber keine fertige Lösung wie z.B. JMS. Entweder man baut sich selbst eine per Polling auf der DB arbeitende Lösung oder googlet noch etwas.
Stefan
Zum einen bin ich mir relativ sicher, dass Django nicht threadsafe ist. Und selbst wenn es das wäre, was ist mit dem Datenbank-Treiber?
Zum anderen funktioniert Django ja nach dem CGI-Prinzip und in der Theorie lebt das Programm nur jeweils so lange, wie ein Request bearbeitet wird. Wenn mod_python oder mod_fcgi die Programme länger am Leben lassen, ist das nur eine Optimierung, aber nichts, auf das man sich verlassen kann.
Im Prinzip gilt somit das selbe wie bei Java.
Ich würde empfehlen, längerfristige Aufgaben in externe Programme auszulagern. Damit diese bequem über den Django-ORM auf die DB zugreifen können, bietet es sich an, hier custom commands zu bauen. Im Gegensatz zu Java gibt es dafür aber keine fertige Lösung wie z.B. JMS. Entweder man baut sich selbst eine per Polling auf der DB arbeitende Lösung oder googlet noch etwas.
Stefan
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
Es ist hald abhängig was in den Threads abgehandelt wird, so wie es auch bei JBoss ist. was möchtest du denn in deimen Thread tun?
-
- User
- Beiträge: 80
- Registriert: Dienstag 14. November 2006, 10:40
Hallo und Danke für die Infos...
Ich möchte in meinem Thread größere PDF-Dokumente erzeugen und sie per Mail automatisch versenden...
Viele Grüße
Piet
Ich möchte in meinem Thread größere PDF-Dokumente erzeugen und sie per Mail automatisch versenden...
Viele Grüße
Piet
Dafür könnte man doch auch irgendeine Art Warteschleife erstellen. Dann per cronjob alle x Minuten in der "Warteschleife" schauen und ggfs. ein Dokument erzeugen und verschicken. Oder evtl. einen eigenen Dienst starten mit dem man über irgendeine eine Schnittstelle kommuniziert.