Мне необходимо реализовать небольшое приложение со своим собственным CLI, которое принимает команды: start - запустить сервер, stop - остановить сервер, statistics - вывести статистику.
Хочу добиться результата вида :
$ myserver.py start
$ myserver.py statistic
$ myserver.py stop
но не знаю как. Пробовал сделать через daemon
A simple unix/linux daemon in Python, но не получилось собирать статистику. Может мне нужно смотреть в сторону
subprocess?
Подскажите как правильно организовать управление?
Пока мое решение выглядит так:
class MyReceiver(object):
def __init__(self):
self.run = False
def start(self):
if self.run:
print "The server is already running"
return
self.thread = threading.Thread(target=worker)
self.thread.daemon = True
self.thread.start()
self.run = True
def stop(self):
if self.run:
self.thread.join()
self.run = False
def get_statistic(self):
return "statistic here"
def main():
print "Hello! Use: start|stop|restart|statistic|exit"
reciver = MyReceiver()
reciver.start()
try:
while True:
command = str(raw_input('myserver:'))
if 'start' == command:
reciver.start()
elif 'stop' == command:
reciver.stop()
reciver.get_statistic()
elif 'restart' == command:
reciver.stop()
time.sleep(.5)
reciver.start()
elif 'statistic' == command:
reciver.get_statistic()
elif 'exit' == command:
reciver.stop()
sys.exit(0)
else:
print "Unknown command"
time.sleep(.2)
except KeyboardInterrupt:
reciver.stop()
sys.exit(1)