Gå til innhold

Starte ein uavhengig bakgrunnsprosess


Anbefalte innlegg

Heisann!

 

Eg jobber med eit system som konverterer ei videofil som blir lasta opp. Fila som lastast opp er enten i MPG, MOV eller AVI.

 

Eg forstår at opplastinga av filmen må gjerast i samme prosess, men eg kunne godt tenke meg å ta konverteringa av filmen i ein annan prosess (gjerast for øyeblikket via os.system("mencoder %variabler")).

Eg har prøvd å gjere dette ved hjelp av Threading-modulen, men eg har ikkje fått til å koble prosessen ut av spelet, slik at brukaren kan gå vidare på andre deler av systemet utan å måtte vente på at filmen vert konvertert.

 

Er det nokon her som har erfaringer med dette? Altså, for å seie det enkelt:

  • Brukaren lastar opp fil
  • Fila vert lagra på webserveren
  • Ein ny prosess startar heilt uavhengig av den eksisterande prosessen, som kjører programmet mencoder med dei forskjellige argumenta, og får passert variablen som inneheld plasseringa til den originalt opplasta fila. Dette fører til at brukaren ikkje må vente på at serveren har konvertert fila før han får gjere noko anna.

På forhånd - tusen takk for innspel! :-)

Endret av Henrik Lied
Lenke til kommentar
Videoannonse
Annonse
Kanskje en av spawn-variantene i os-modulen er det du ser etter.  Da kan du f.eks sjekke om PID'en for den nye prosessen fortsatt finnes for å avgjøre om prosessen er ferdig.

8156387[/snapback]

Har prøvd spawnv, men denne hjalp meg heller lite, desverre. Fekk ingen output i det heile.

Lenke til kommentar
Kanskje en av spawn-variantene i os-modulen er det du ser etter.  Da kan du f.eks sjekke om PID'en for den nye prosessen fortsatt finnes for å avgjøre om prosessen er ferdig.

8156387[/snapback]

Har prøvd spawnv, men denne hjalp meg heller lite, desverre. Fekk ingen output i det heile.

8156448[/snapback]

 

Testet dette kjapt under windows:

 

import os

mode = os.P_NOWAIT
cmd = 'c:/WINDOWS/notepad.exe'
arg = 'spawn_test.txt'

pid = os.spawnl(mode, cmd, cmd, arg)
print "pid:", pid

 

Og det funker greit. Men jeg ser at os.spawn kan erstattes av den (nesten) nye subprocess modulen. Eksempelet i lib-manualen 6.8.3.5 er

 

pid = Popen(["/bin/mycmd", "myarg"]).pid

Lenke til kommentar

spawn1 er vel windows only, trur eg. Det samme eksempelet med spawnv fungerer ikkje her, dessverre. :-/

 

Eg kan nok ikkje bruke javascript heller. Eg bruker rammeverket Django, og køyringa av spawn* skjer i save()-metoden. Der kan det ikkje køyrast JavaScript.

 

Her er den noværande koda: http://dpaste.com/hold/6879/

Eg importerer denne inn i save-metoden i modellen min, og køyrer sss().

Om du/nokon andre har moglegheit til å teste ut litt hadde eg blitt veldig glad. :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...