Форум сайта python.su
Уважаемые форумчане, нужно помощь! При попытке написания интерфейса к управлению веб-сервером на торнадо столкнулся со следущими проблемами:
1) Сначала запускал сервер в отдельном процессе и проблем никаких не было, все коррктно завершалось при os.kill(pid), сервер освобождал занимаемый порт, но когда стал вопрос о прикручивании гуи нужно было возвращать логи в интерфес, а так как у процесса другое адресное пространстово, то через механизм сигналов/слотов данные получать не удавалось
2) перешел к потокам и тут столкнулся с другой проблемой не могу корректно завершить работу tornado (не особождает занимаемый порт)
Помогите пожалуйста как стартавать и останавливать торнадо в отдельном потоке:
import threading import tornado.ioloop import tornado.web import time class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world!\n") def start_tornado(*args, **kwargs): application = tornado.web.Application([ (r"/", MainHandler), ]) application.listen(8888) print("Starting Torando") tornado.ioloop.IOLoop.instance().start() print("Tornado finished") def stop_tornado(): ioloop = tornado.ioloop.IOLoop.instance() ioloop.add_callback(ioloop.stop) print("Asked Tornado to exit") def main(): t = threading.Thread(target=start_tornado) t.start() time.sleep(5) stop_tornado() t.join() time.sleep(10) t = threading.Thread(target=start_tornado) t.start() time.sleep(5) stop_tornado() t.join()
Отредактировано ActionNum (Дек. 3, 2017 19:26:10)
Офлайн
не знаю зачем вам это, на гите есть типа такого:
https://gist.github.com/mivade/35cbd270f49e1ca7ba7d
Офлайн