diff --git a/oml/nodes.py b/oml/nodes.py index d16b402..ea89cf7 100644 --- a/oml/nodes.py +++ b/oml/nodes.py @@ -542,6 +542,8 @@ class Nodes(Thread): self.queue('pull') def _pull(self): + if not state.sync_enabled or settings.preferences.get('downloadRate') == 0: + return if state.activity and state.activity.get('activity') == 'import': return self._pulling = True diff --git a/oml/server.py b/oml/server.py index 89401d0..d0e997d 100644 --- a/oml/server.py +++ b/oml/server.py @@ -6,7 +6,6 @@ import sys import signal import time -from tornado.httpserver import HTTPServer from tornado.ioloop import IOLoop from tornado.web import StaticFileHandler, Application @@ -71,7 +70,6 @@ def shutdown(): logger.debug('shutdown downloads') state.downloads.join() logger.debug('shutdown http_server') - state.http_server.stop() if state.tasks: logger.debug('shutdown tasks') state.tasks.join() @@ -135,8 +133,9 @@ def run(): ] setup.create_db() - http_server = HTTPServer(Application(handlers, **options)) - http_server.listen(settings.server['port'], settings.server['address']) + http_server = Application(handlers, **options) + max_buffer_size = 2*1024*1024*1024 + http_server.listen(settings.server['port'], settings.server['address'], max_buffer_size=max_buffer_size) if PID: with open(PID, 'w') as pid: diff --git a/oml/state.py b/oml/state.py index 7f63690..4768e7b 100644 --- a/oml/state.py +++ b/oml/state.py @@ -8,6 +8,7 @@ node = False online = False tasks = False downloads = False +sync_enabled = True tor = False update = False shutdown = False diff --git a/oml/update.py b/oml/update.py index c265f63..566d66b 100644 --- a/oml/update.py +++ b/oml/update.py @@ -333,7 +333,9 @@ class Update(Thread): def install(self): while update_available(): self.status('Downloading...') - while not download(): + max_retry = 5 + while max_retry > 0 and not download(): + max_retry -= 1 self.status('Download failed, retrying...') time.sleep(5) self.status('Downloading...') diff --git a/oml/websocket.py b/oml/websocket.py index 466adeb..7e468f2 100644 --- a/oml/websocket.py +++ b/oml/websocket.py @@ -57,11 +57,10 @@ class Handler(WebSocketHandler): def post(self, event, data): message = json_dumps([event, data]) - main = IOLoop.instance() if self.ws_connection is None: self.on_close() else: - main.add_callback(lambda: self.write_message(message)) + state.main.add_callback(lambda: self.write_message(message)) def trigger_event(event, data): #if len(state.websockets): diff --git a/requirements-shared.txt b/requirements-shared.txt index 934cfb4..2edce59 100644 --- a/requirements-shared.txt +++ b/requirements-shared.txt @@ -1,5 +1,5 @@ -requests==2.9.1 -tornado==4.3 +requests==2.21.0 +tornado==5.1.1 chardet html5lib #ox>=2.0.666 @@ -8,5 +8,5 @@ python-stdnum==1.2 PyPDF2==1.25.1 pysocks stem -sqlitedict==1.4.0 +sqlitedict==1.6.0 zeroconf