On Thu, 5 Jul 2007, Oliver Charles wrote: > > That doesn't work, I've tried that, it still hangs the view. > > Give it a shot with a long python script (while True: time.sleep(1) > would do) and you'll find that the view never returns. If you can get > it to return, I'd love to see your code, but it's no go for me... >
Well, modulo the script name & arguments, that's the code I'm using successfully to run background processes. How have you verified that the view does not return? Does the sub-process actually start (i.e. can you see it with ps)? What OS are you using, and have you verified that the code you are uring works outside of django (write a small shell script that does nothing but call the external torrent process - does that work as expected?). -Simon. > On Jul 5, 2:57 pm, Simon Drabble <[EMAIL PROTECTED]> wrote: >> On Thu, 5 Jul 2007, Oliver Charles wrote: >> >>> Just to give an update, I've tried forking the view, and then turning >>> the child process into a daemon with a double fork, and then exiting >>> before it gets to the return, and letting the parent do the return, >>> but this is not working either... >> >>> I'm stumped, and don't really want to have to create a specific >>> controller daemon (but guess I'm going to have to) >> >>> - Olllie >> >> Use the subprocess module: >> >> import subprocess >> ... >> script = 'python' >> args = (script, '/path/to/executable', ...) >> env = { ... } >> pid = subprocess.Popen(args, close_fds=True, env=env).pid >> >> t = Torrent.objects.create(pid=pid) >> ... >> >> Remember to store the pid for later wait()ing or you'll end up with zombies. >> >> -Simon. >> >> >> >> >> >>> On Jul 5, 2:58 am, Oliver Charles <[EMAIL PROTECTED]> wrote: >>>> Hi >> >>>> I'm currently playing around trying to make something akin to >>>> TorrentFlux, using Django. TorrentFlux is a system that's PHP and it >>>> calls shell scripts to download torrents in the background, with a web >>>> interface to control them. For every torrent download, a new process >>>> is started, which runs with the torrent - downloading and seeding it. >> >>>> My system is similar, and i'm at a very proof of concept stage at the >>>> moment. However, I've hit a problem. I can't find a nice way to spawn >>>> the processes, without Django hanging as long as the process needs >>>> (and for 600mb torrents, that's gonna be hours, and endless if seeding >>>> is expected). >> >>>> At the moment I am doing: >> >>>> def start(request): >> >>>> p = os.spawnlp(os.P_NOWAIT, 'python', 'python', '/Users/acid/Work/ >>>> dTorrent/btdownloadheadless', >>>> '/Users/acid/Desktop/Inbox/-{mininova.org}- Professional C+ >>>> +.torrent') >> >>>> t = Torrent.objects.create(pid=p) >> >>>> return HttpResponse(str(p)) >> >>>> But this is hanging, despite the P_NOWAIT (the Torrent model does get >>>> created). >> >>>> Any ideas? >> >> -- > > > > -- --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---