Onionr/src/onionrthreads/__init__.py

35 lines
951 B
Python
Raw Normal View History

from typing import Callable
from typing import Iterable
import traceback
from threading import Thread
2020-07-31 01:15:36 +00:00
from time import sleep
import logger
def _onionr_thread(func: Callable, args: Iterable,
2020-07-31 01:15:36 +00:00
sleep_secs: int, initial_sleep):
if initial_sleep:
sleep(initial_sleep)
while True:
try:
func(*args)
except Exception as _: # noqa
logger.warn(
"Onionr thread exception \n" + traceback.format_exc(),
terminal=True)
2020-07-31 01:15:36 +00:00
sleep(sleep_secs)
def add_onionr_thread(
func: Callable, args: Iterable,
2020-07-31 01:15:36 +00:00
sleep_secs: int, initial_sleep: int = 5):
"""Spawn a new onionr thread that exits when the main thread does.
Runs in an infinite loop with sleep between calls
Passes in an interable args and sleep variables"""
Thread(target=_onionr_thread,
2020-07-31 01:15:36 +00:00
args=(func, args, sleep_secs, initial_sleep), daemon=True).start()