diff options
author | mkaay <mkaay@mkaay.de> | 2009-12-20 23:22:46 +0100 |
---|---|---|
committer | mkaay <mkaay@mkaay.de> | 2009-12-20 23:22:46 +0100 |
commit | 77ebea73401f00f9150299317bdddaa24beddd2a (patch) | |
tree | 6e28ad2ddb138296a227b0ffb92100b64b94d669 /module/web | |
parent | merge (diff) | |
download | pyload-77ebea73401f00f9150299317bdddaa24beddd2a.tar.xz |
file_list fix, webinterface termination fix AGAIN -.-'
Diffstat (limited to 'module/web')
-rw-r--r-- | module/web/ServerThread.py | 8 | ||||
-rw-r--r-- | module/web/manage.py | 27 | ||||
-rw-r--r-- | module/web/pyload.db | bin | 43008 -> 43008 bytes |
3 files changed, 24 insertions, 11 deletions
diff --git a/module/web/ServerThread.py b/module/web/ServerThread.py index 2279296d8..d9f0f8cdc 100644 --- a/module/web/ServerThread.py +++ b/module/web/ServerThread.py @@ -4,6 +4,7 @@ from os.path import join from subprocess import Popen, PIPE, STDOUT from time import sleep from signal import SIGINT +import os class WebServer(threading.Thread): def __init__(self, pycore): @@ -16,12 +17,15 @@ class WebServer(threading.Thread): host = self.pycore.config['webinterface']['host'] port = self.pycore.config['webinterface']['port'] self.pycore.logger.info("Starting Webserver: %s:%s" % (host,port) ) - self.p = Popen(['python',join(self.pycore.path,"module","web","manage.py"), "runserver", "%s:%s" % (host,port)], close_fds=True, stderr=PIPE, stdin=PIPE, stdout=PIPE, shell=True) + self.p = Popen(['python',join(self.pycore.path,"module","web","manage.py"), "runserver", "%s:%s" % (host,port)], close_fds=True, stderr=PIPE, stdin=PIPE, stdout=PIPE) #os.system("python " + join(self.pycore.path,"module","web","manage.py runserver %s:%s" % (host,port))) #@TODO: better would be real python code + sleep(1) + with open("webserver.pid", "r") as f: + self.pid = int(f.read().strip()) while self.running: sleep(1) def quit(self): - self.p.terminate() + os.kill(self.pid, SIGINT) self.running = False diff --git a/module/web/manage.py b/module/web/manage.py index ae9495854..782f6fbe0 100644 --- a/module/web/manage.py +++ b/module/web/manage.py @@ -1,12 +1,21 @@ #!/usr/bin/env python -from django.core.management import execute_manager -try: - import settings # Assumed to be in the same directory. -except ImportError: - import sys - sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__) - sys.exit(1) +import os -if __name__ == "__main__": - execute_manager(settings) +pid = os.fork() + +if pid: + with open("webserver.pid", "w") as f: + f.write(str(pid)) +else: + from django.core.management import execute_manager + + try: + import settings # Assumed to be in the same directory. + except ImportError: + import sys + sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__) + sys.exit(1) + + if __name__ == "__main__": + execute_manager(settings) diff --git a/module/web/pyload.db b/module/web/pyload.db Binary files differindex 097ea4d3a..44b0dbe23 100644 --- a/module/web/pyload.db +++ b/module/web/pyload.db |