+ def is_worker_thread(cls):
+ if cls.worker is None:
+ return False
+ else:
+ import threading
+ return cls.worker == threading.current_thread()
+
+ @classmethod
+ def wait_for_notification(cls, poll=30):
+ if not cls.is_worker_thread():
+ raise RuntimeError("This method needs to be ran with the worker")
+ while cls.worker_started:
+ cls.worker_notify.wait()
+ cls.worker_notify.clear()
+ cls.report.print_log("Fetching cryptoportfolio")
+ cls.get_cryptoportfolio(refetch=True)
+ cls.callback.set()
+ time.sleep(poll)
+
+ @classmethod
+ def notify_and_wait(cls):
+ cls.callback.clear()
+ cls.worker_notify.set()
+ cls.callback.wait()
+
+ @classmethod
+ def wait_for_recent(cls, delta=4, poll=30):