spwnl reaktionslos

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Frank aka Ch3ck3r
User
Beiträge: 49
Registriert: Dienstag 13. November 2007, 21:56
Wohnort: Berlin
Kontaktdaten:

Hi Community,

auch wenn ich mich gerade jetzt erst hier angemeldet habe, ich lerne schon eine weile Python auf eigene Faust.

Bis jetzt konnte ich meine Probleme immer selber lösen ("oder umgehen" xD) aber jetzt komm ich echt nicht mehr weiter.

Ich habe für ein Projekt einen "Server" programmiert, dieser läuft auf meinem Root Server (Python 2.4 - Linux).

Connecten und Datenaustausch (über socket, modus: STREAM) funktioniert schon einwandfrei, dennoch folgendes Problem

Wenn ich dem Server sende:
startdownload,0
ruft der das script eine Funktion auf die als erstes die 0 ausweretet.
Aus einer liste in der Dateinamen gespeichert sind, wird der Eintrag der Liste mit dem Key 0 gelesn (wenn man 1 übergibt dann 1 und so weiter)
der inhalt der Liste wird in der variablen source gespeichert

Code: Alles auswählen

source = liste[0]
darin steht jetzt z.B. "http://www.ts-onlyfree.de/index.php"

Jetzt zum eigentlichen Problem:
Die Funktion startet nun mithilfe von os.spawnl() den Prozess downloader.py und übergibt source als argument - oder besser gesagt das soll passieren. Denn es passiert überhaupt nix, keine Fehlermeldung und downloader.py (welche aus Testgründen eine Textdatei anlegt) macht auch nichts

Code: Alles auswählen

import os
os.spawnl(os.P_NOWAIT,r'/home/python/wasnlos/neuerdl/downloader.py',source)
Mit diesem Code versuche ich den Prozess zu starten, allerdings ohne Erfolg

Würde über Hilfe erfreut sein :)
kostenlose TS2-Server für jeweils 31 Tage:
http://www.ts-onlyfree.de
windner
User
Beiträge: 76
Registriert: Freitag 19. Oktober 2007, 11:25

Hmm.
Geht's mit subprocess.Popen?
Ist der Befehl sinnvoll?
Frank aka Ch3ck3r
User
Beiträge: 49
Registriert: Dienstag 13. November 2007, 21:56
Wohnort: Berlin
Kontaktdaten:

Habs mal probiert

Code: Alles auswählen

        
source = specialdownload[0:l3]
subprocess.Popen("/home/python/wasnlos/neuerdl/downloader.py "+str(source))        
print "started subprocess"
Jetzt bekomm ich diesen Fehler
Accepting client connections
Accepted client
awaiting a command
Command: startdownload
Arguments: ['0']
Traceback (most recent call last):
File "remotedownload-server.py", line 106, in ?
ret = startdownload(argument,dl)
File "remotedownload-server.py", line 14, in startdownload
subprocess.Popen("/home/python/wasnlos/neuerdl/downloader.py "+str(source))
File "/usr/lib/python2.4/subprocess.py", line 558, in __init__
errread, errwrite)
File "/usr/lib/python2.4/subprocess.py", line 991, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
kostenlose TS2-Server für jeweils 31 Tage:
http://www.ts-onlyfree.de
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Probier mal:

Code: Alles auswählen

subprocess.Popen(["/home/python/wasnlos/neuerdl/downloader.py", str(source)])
Bist du sicher dass es diese Datei gibt?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Frank aka Ch3ck3r
User
Beiträge: 49
Registriert: Dienstag 13. November 2007, 21:56
Wohnort: Berlin
Kontaktdaten:

Danke für den Code, er funktioniert

@Datei existiert:

Die Datei war hochgeladen an richtiger Stelle, aber auch die Bash konnte sie nicht finden, beim aufruf "dir" wurde sie angezeigt (grün markiert)
Hab sie dann nocheinmal hochgeladen und dann war es normal.

Ansonsten hatte ich noch nen Fehler bei chmod (Nicht genügend Rechte)

aber jetzt geht es, Danke!
kostenlose TS2-Server für jeweils 31 Tage:
http://www.ts-onlyfree.de
Antworten