diff options
author | J.A. Nache <nache.nache@gmail.com> | 2014-09-19 12:56:41 +0200 |
---|---|---|
committer | J.A. Nache <nache.nache@gmail.com> | 2014-09-19 12:56:41 +0200 |
commit | 0e23c2a45f69cacdf51562135ae0bece1e73e725 (patch) | |
tree | 36b6934ba498c50051af6a7853b2b8edb3638661 /GitAutoDeploy.py | |
parent | cb60d28ad92a954fe106e9be69353c046c306a75 (diff) | |
download | Git-Auto-Deploy-0e23c2a45f69cacdf51562135ae0bece1e73e725.zip Git-Auto-Deploy-0e23c2a45f69cacdf51562135ae0bece1e73e725.tar.gz Git-Auto-Deploy-0e23c2a45f69cacdf51562135ae0bece1e73e725.tar.bz2 |
kill -HUP now restart server, socket error handler, pid file generator
Diffstat (limited to 'GitAutoDeploy.py')
-rwxr-xr-x | GitAutoDeploy.py | 48 |
1 files changed, 39 insertions, 9 deletions
diff --git a/GitAutoDeploy.py b/GitAutoDeploy.py index 84ebd27..72d2956 100755 --- a/GitAutoDeploy.py +++ b/GitAutoDeploy.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -import json, urlparse, sys, os, signal +import json, urlparse, sys, os, signal, socket from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer from subprocess import call @@ -114,32 +114,62 @@ class GitAutoDeployMain: GitAutoDeploy.quiet = True if(arg == '-q' or arg == '--quiet'): GitAutoDeploy.quiet = True + if(GitAutoDeploy.daemon): pid = os.fork() if(pid != 0): sys.exit() os.setsid() + self.create_pidfile() + if(not GitAutoDeploy.quiet): print 'Github & Gitlab Autodeploy Service v 0.1 started' else: print 'Github & Gitlab Autodeploy Service v 0.1 started in daemon mode' - self.server = HTTPServer(('', GitAutoDeploy.getConfig()['port']), GitAutoDeploy) - self.server.serve_forever() + try: + self.server = HTTPServer(('', GitAutoDeploy.getConfig()['port']), GitAutoDeploy) + self.server.serve_forever() + except socket.error, e: + print "Error on socket: %s" % e + sys.exit(1) - def close(self, signum, frame): - if(not GitAutoDeploy.quiet): - print '\nGoodbye' + def create_pidfile(self): + mainpid = os.getpid() + f = open(GitAutoDeploy.getConfig()['pidfilepath'], 'w') + f.write(str(mainpid)) + f.close() + + def remove_pidfile(self): + os.remove(GitAutoDeploy.getConfig()['pidfilepath']) + def stop(self): if(self.server is not None): self.server.socket.close() - sys.exit() + + def exit(self): + if(not GitAutoDeploy.quiet): + print '\nGoodbye' + self.remove_pidfile() + sys.exit(0) + + def signal_handle(self, signum, frame): + if(signum == 1): + self.stop() + self.run() + elif(signum == 2): + print 'Keyboard Interrupt!!!' + self.stop() + self.exit() + else: + self.stop() + self.exit() if __name__ == '__main__': gadm = GitAutoDeployMain() - signal.signal(signal.SIGHUP, gadm.close) - signal.signal(signal.SIGINT, gadm.close) + signal.signal(signal.SIGHUP, gadm.signal_handle) + signal.signal(signal.SIGINT, gadm.signal_handle) gadm.run() |