Hallo zusammen,
Ich würde gerne in meiner Wohnung einen Server betreiben und mit diesem Fernsehsendungen streamen was auch schon funktioniert. Nun würde ich aber gerne mit djano den firefox auf dem server starten und mit Hilfe eines Beamers den Film an die wand provozieren.
Sprich ich drück einen Button auf meiner Website (client) und auf dem server öffnet sich der Firefox. Ist sowas möglich? Vielen Dank im voraus
firefox auf Server öffnen
@erdmulch: Grundsätzlich mit dem `subprocess`-Modul. Dann ist nur noch die Frage wie Django ausgeführt wird, also ob der Prozess aus dem man das startet dauerhaft läuft, oder nicht. Wenn nicht, oder wenn man sich auf das aktuelle Setup nicht verlassen kann oder will, müsste man wohl einen extra Server schreiben der auf Anweisung von der Webanwendung wartet und dann Firefox startet.
Hallo nochmals,
ich habe nun versucht den Firefox auf dem Server auszuführen
siehe Code
auf der Konsole erscheint nun die Fehlermeldung:
Error: no display specified
Ich hab da auch schon gegoogelt, ich will nur, dass auf dem Server der Firefox geöffnet wird.
Ich will keinen Xserver oder ähnliches einrichten.
Kann mir jemand sagen was ich machen muss?
vielen Dank
ich habe nun versucht den Firefox auf dem Server auszuführen
siehe Code
Code: Alles auswählen
def firefox_streaming(request):
subprocess.call(["firefox"])
return render(request,'firefox_streaming/index.html')
Error: no display specified
Ich hab da auch schon gegoogelt, ich will nur, dass auf dem Server der Firefox geöffnet wird.
Ich will keinen Xserver oder ähnliches einrichten.
Kann mir jemand sagen was ich machen muss?
vielen Dank
@erdmulch: Wie soll denn der Firefox ohne X funktionieren? Firefox ist ein GUI-Programm, das braucht halt eine grafische Umgebung.
@erdmulch: Falls X tatsächlich läuft, dann fehlt wahrscheinlich die DISPLAY-Umgebungsvariable bei dem Prozess in dem die Webanwendung läuft.
@erdmulch:
Da du schriebst dass das Streaming breits funktioniert hast du mit Sicherheit schon ein X installiert, sonst würdest du nur bis zur Login prompt in der Shell kommen.
Das ganze sollte sich mit einem
export DISPLAY=:0 beheben lassen
versuch mal den subprocess.call anzupassen
der ; ist dafür zuständig das firefox startet selbst wenn der export fehlschlägt. (was er allerdings nie tun dürfte)
das & am Ende sorgt dafür das firefox als eigenständiger Process startet und nicht stirbt wenn django beendet wird
Ist allerdings nicht zwingend erforderlich.
ggf brauchst du dann noch ein "killall firefox" button um firefox dann wieder los zu werden
Das ist allerdings auch eher quick & dirty - ggf sollte man das ganze noch etwas schön machen wenn es so funktioniert.
Da du schriebst dass das Streaming breits funktioniert hast du mit Sicherheit schon ein X installiert, sonst würdest du nur bis zur Login prompt in der Shell kommen.
Das ganze sollte sich mit einem
export DISPLAY=:0 beheben lassen
versuch mal den subprocess.call anzupassen
Code: Alles auswählen
subprocess.call(["export DISPLAY=:0 ; firefox &"])
das & am Ende sorgt dafür das firefox als eigenständiger Process startet und nicht stirbt wenn django beendet wird
Ist allerdings nicht zwingend erforderlich.
ggf brauchst du dann noch ein "killall firefox" button um firefox dann wieder los zu werden
Das ist allerdings auch eher quick & dirty - ggf sollte man das ganze noch etwas schön machen wenn es so funktioniert.
Um Umgebungsvariablen zu setzen für den Prozess den man da startet gibt es ein Schlüsselwortargument bei `Popen`.
Da sagst du was, in die docs gucken hilft
https://docs.python.org/2/library/subpr ... cess.Popen
und wieder was gelernt, habs zwar noch nie gebraucht weil sich dafür bash meist eher anbietet, aber irgendwann brauch ich es vielleicht doch mal.
https://docs.python.org/2/library/subpr ... cess.Popen
und wieder was gelernt, habs zwar noch nie gebraucht weil sich dafür bash meist eher anbietet, aber irgendwann brauch ich es vielleicht doch mal.