summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar mkaay <mkaay@mkaay.de> 2009-12-20 23:22:46 +0100
committerGravatar mkaay <mkaay@mkaay.de> 2009-12-20 23:22:46 +0100
commit77ebea73401f00f9150299317bdddaa24beddd2a (patch)
tree6e28ad2ddb138296a227b0ffb92100b64b94d669
parentmerge (diff)
downloadpyload-77ebea73401f00f9150299317bdddaa24beddd2a.tar.xz
file_list fix, webinterface termination fix AGAIN -.-'
-rw-r--r--module/file_list.py2
-rw-r--r--module/web/ServerThread.py8
-rw-r--r--module/web/manage.py27
-rw-r--r--module/web/pyload.dbbin43008 -> 43008 bytes
4 files changed, 25 insertions, 12 deletions
diff --git a/module/file_list.py b/module/file_list.py
index 9d4c090d1..67ae447bb 100644
--- a/module/file_list.py
+++ b/module/file_list.py
@@ -295,7 +295,7 @@ class File_List(object):
"""
packager.file_list.lock.acquire()
try:
- key, n, pyfile, pypack, pid = self._getFileFromID()
+ key, n, pyfile, pypack, pid = packager._getFileFromID()
del pypack.files[n]
if not pypack.files:
packager.removePackage(pid)
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
index 097ea4d3a..44b0dbe23 100644
--- a/module/web/pyload.db
+++ b/module/web/pyload.db
Binary files differ