Я разбил свою программу на простой 60-линейный режим, который должен запускать и останавливать сервер Tornado через 2 секунды.Этот фрагмент кода работал с более ранней версией Debian, но он зависает и не останавливается на текущей версии:
> uname -a
Linux xyz 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l GNU/Linux
import time
import threading
import logging
import tornado.web
import tornado.httpserver
import tornado.ioloop
import tornado.websocket
class HTTPHandler(tornado.web.RequestHandler):
"""HTTP request handler for my simplyfied web-server."""
def initialize(self):
pass
def get(self):
"""Execute HTTP GET commands."""
self.set_status(200)
self.set_header('Content-type', "text/html; charset=utf-8")
self.write("HI")
class WebServer(threading.Thread):
def __init__(self):
"""Setup web-server on a configured port."""
threading.Thread.__init__(self)
self.port = 4030
def run(self):
"""Start listening on port as a web-server."""
application = tornado.web.Application([(r"/.*", HTTPHandler)])
httpd = tornado.httpserver.HTTPServer(application)
interface, ip = ("eth0", "192.168.2.4")
httpd.listen(self.port, address=ip)
logging.info("WebServer Starts - %s(%s):%s", ip, interface, self.port)
log = logging.getLogger("tornado.access")
log.setLevel(logging.NOTSET)
tornado.ioloop.IOLoop.instance().start()
logging.info("WebServer exiting")
def stop(self):
"""Set shutdown flag for the thread to stop."""
tornado.ioloop.IOLoop.instance().stop()
if __name__ == '__main__':
rootLogger = logging.getLogger('')
rootLogger.setLevel(logging.DEBUG)
logging.getLogger("tornado.general").setLevel(logging.NOTSET)
logging.getLogger("tornado.application").setLevel(logging.NOTSET)
logging.getLogger("tornado.access").setLevel(logging.NOTSET)
ws = WebServer()
ws.start()
time.sleep(2.0)
logging.debug("Stopping")
ws.stop()
Если честно, я не могу вспомнить, какая была предыдущая версия ОС, но это было в-линейшая версия годаЕсть идеи, что я делаю не так?