Do not sort events in the event queue alphabetically

This should never have been a PriorityQueue, or at the very least it should
never have the data itself in a sortable structure.

Thanks to processing speed of the event queue that seldomly showed,
only in cases where two events entered the queue almost simultanously,
e.g. when starting to render a timelapse movie and immediately failing.

Should solve #1343
This commit is contained in:
Gina Häußge 2016-06-01 10:29:47 +02:00
parent 1581ebbead
commit 36ec9c4741

View file

@ -107,7 +107,7 @@ class EventManager(object):
self._registeredListeners = collections.defaultdict(list)
self._logger = logging.getLogger(__name__)
self._queue = Queue.PriorityQueue()
self._queue = Queue.Queue()
self._worker = threading.Thread(target=self._work)
self._worker.daemon = True
self._worker.start()
@ -115,7 +115,7 @@ class EventManager(object):
def _work(self):
try:
while True:
(event, payload) = self._queue.get(True)
event, payload = self._queue.get(True)
eventListeners = self._registeredListeners[event]
self._logger.debug("Firing event: %s (Payload: %r)" % (event, payload))
@ -144,7 +144,7 @@ class EventManager(object):
payload being a payload object specific to the event.
"""
self._queue.put((event, payload), 0)
self._queue.put((event, payload))
if event == Events.UPDATED_FILES and "type" in payload and payload["type"] == "printables":
# when sending UpdatedFiles with type "printables", also send another event with deprecated type "gcode"
@ -152,8 +152,7 @@ class EventManager(object):
import copy
legacy_payload = copy.deepcopy(payload)
legacy_payload["type"] = "gcode"
self._queue.put((event, legacy_payload), 0)
self._queue.put((event, legacy_payload))
def subscribe(self, event, callback):
"""