From ec7feb1a3c3a43b92df3234969170ca4e116c48a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Thu, 5 Feb 2015 11:12:03 +0100 Subject: [PATCH] Possible workaround for OctoPrint stalling when a clock change happens while it is running --- setup.py | 4 ++++ src/octoprint/server/__init__.py | 13 +++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 17549a0e..ecb80ffe 100644 --- a/setup.py +++ b/setup.py @@ -289,6 +289,10 @@ def params(): zip_safe = False install_requires = open("requirements.txt").read().split("\n") + import sys + if sys.platform in ("linux2", "darwin"): + install_requires += ["monotime"] + entry_points = { "console_scripts": [ "octoprint = octoprint:main" diff --git a/src/octoprint/server/__init__.py b/src/octoprint/server/__init__.py index 7e701b5a..098f9512 100644 --- a/src/octoprint/server/__init__.py +++ b/src/octoprint/server/__init__.py @@ -575,6 +575,17 @@ class Server(): app.register_blueprint(blueprint, url_prefix=url_prefix) logger.debug("Registered API of plugin {name} under URL prefix {url_prefix}".format(name=name, url_prefix=url_prefix)) + ## Tornado initialization starts here + + try: + import monotime + import time + ioloop = IOLoop(time_func=time.monotonic) + except: + import time + ioloop = IOLoop(time_func=time.time) + ioloop.install() + self._router = SockJSRouter(self._createSocketConnection, "/sockjs") upload_suffixes = dict(name=settings().get(["server", "uploads", "nameSuffix"]), path=settings().get(["server", "uploads", "pathSuffix"])) @@ -604,8 +615,6 @@ class Server(): observer.schedule(util.watchdog.GcodeWatchdogHandler(fileManager, printer), settings().getBaseFolder("watched")) observer.start() - ioloop = IOLoop.instance() - # run our startup plugins octoprint.plugin.call_plugin(octoprint.plugin.StartupPlugin, "on_startup",