You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.6 KiB
101 lines
2.6 KiB
12 years ago
|
Bring back the --pid functionality of 3.x, needed for our init script.
|
||
|
|
||
|
Patch contributed by Nikita Kozlov (klnikita / klnikita_ on IRC).
|
||
|
|
||
|
Slight adjustments made to use --pid instead of --pidfile and reordered --help.
|
||
|
|
||
|
URL: https://dpaste.org/Menvq/
|
||
|
BUG: https://bugs.gentoo.org/show_bug.cgi?id=472422
|
||
|
|
||
|
--- a/fiber.py
|
||
|
+++ b/fiber.py
|
||
|
@@ -136,11 +136,13 @@
|
||
|
self.__stdout.flush()
|
||
|
self.__newline = string.endswith( '\n' )
|
||
|
|
||
|
|
||
|
-def fork( output ):
|
||
|
+def fork( output, pidfile ):
|
||
|
|
||
|
try:
|
||
|
+ if pidfile:
|
||
|
+ pidout = open(pidfile, 'w') # open pid file for writing
|
||
|
log = open( output, 'w' )
|
||
|
nul = open( '/dev/null', 'r' )
|
||
|
pid = os.fork()
|
||
|
except IOError, e:
|
||
|
@@ -166,17 +168,20 @@
|
||
|
print 'error:', e
|
||
|
sys.exit( 1 )
|
||
|
|
||
|
if pid:
|
||
|
+ if pidfile:
|
||
|
+ pidout.write(str(pid))
|
||
|
+ pidout.close()
|
||
|
print pid
|
||
|
sys.exit( 0 )
|
||
|
|
||
|
os.dup2( log.fileno(), sys.stdout.fileno() )
|
||
|
os.dup2( log.fileno(), sys.stderr.fileno() )
|
||
|
os.dup2( nul.fileno(), sys.stdin.fileno() )
|
||
|
|
||
|
|
||
|
-def spawn( generator, port, debug, log ):
|
||
|
+def spawn( generator, port, debug, log, pidfile ):
|
||
|
|
||
|
try:
|
||
|
listener = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
|
||
|
listener.setblocking( 0 )
|
||
|
@@ -187,9 +192,9 @@
|
||
|
print 'error: failed to create socket:', e
|
||
|
sys.exit( 1 )
|
||
|
|
||
|
if log:
|
||
|
- fork( log )
|
||
|
+ fork( log, pidfile )
|
||
|
|
||
|
if debug:
|
||
|
myFiber = DebugFiber
|
||
|
else:
|
||
|
--- a/http-replicator
|
||
|
+++ b/http-replicator
|
||
|
@@ -59,5 +59,5 @@
|
||
|
|
||
|
print 'Transaction successfully completed'
|
||
|
|
||
|
|
||
|
-fiber.spawn( Replicator, Params.PORT, Params.DEBUG, Params.LOG )
|
||
|
+fiber.spawn( Replicator, Params.PORT, Params.DEBUG, Params.LOG, Params.PIDFILE )
|
||
|
--- a/Params.py
|
||
|
+++ b/Params.py
|
||
|
@@ -6,8 +6,9 @@
|
||
|
PORT = 8080
|
||
|
ROOT = os.getcwd() + os.sep
|
||
|
VERBOSE = 0
|
||
|
TIMEOUT = 15
|
||
|
+PIDFILE = False
|
||
|
FAMILY = socket.AF_INET
|
||
|
FLAT = False
|
||
|
STATIC = False
|
||
|
ONLINE = True
|
||
|
@@ -21,8 +22,9 @@
|
||
|
|
||
|
options:
|
||
|
+ --pid FILE write process ID to FILE
|
||
|
-h --help show this help message and exit
|
||
|
-p --port PORT listen on this port for incoming connections, default %(PORT)i
|
||
|
-r --root DIR set cache root directory, default current: %(ROOT)s
|
||
|
-v --verbose show http headers and other info
|
||
|
-t --timeout SEC break connection after so many seconds of inactivity, default %(TIMEOUT)i
|
||
|
-6 --ipv6 try ipv6 addresses if available
|
||
|
@@ -74,8 +76,10 @@
|
||
|
except:
|
||
|
sys.exit( 'Error: %s requires a numerical argument' % _arg )
|
||
|
elif _arg == '--daemon':
|
||
|
LOG = _args.next()
|
||
|
+ elif _arg == '--pid':
|
||
|
+ PIDFILE = _args.next()
|
||
|
elif _arg == '--debug':
|
||
|
DEBUG = True
|
||
|
else:
|
||
|
sys.exit( 'Error: invalid option %r' % _arg )
|