From 52cb2f8ad030aed180b5a4c0d082ba95e4805e17 Mon Sep 17 00:00:00 2001 From: Tim Olson <> Date: Thu, 28 Dec 2023 21:40:52 -0400 Subject: [PATCH] runner worker error reports --- src/dexorder/runner.py | 51 +++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/src/dexorder/runner.py b/src/dexorder/runner.py index 287caba..bcae395 100644 --- a/src/dexorder/runner.py +++ b/src/dexorder/runner.py @@ -174,30 +174,35 @@ class BlockStateRunner: async def worker(self): - log.debug(f'runner worker started') - w3 = current_w3.get() - chain = current_chain.get() - assert chain.chain_id == await w3.eth.chain_id - current_clock.set(BlockClock()) - prev_head = None - while self.running: - try: - async with asyncio.timeout(1): # check running flag every second - head = await self.queue.get() - except TimeoutError: - log.debug('timeout in runner') - # 1 second has passed without a new head. Run the postprocess callbacks to check for activated time-based triggers - if prev_head is not None: - await self.handle_time_tick(head) - else: + try: + log.debug(f'runner worker started') + w3 = current_w3.get() + chain = current_chain.get() + assert chain.chain_id == await w3.eth.chain_id + current_clock.set(BlockClock()) + prev_head = None + while self.running: try: - log.debug('handle head...') - await self.handle_head(chain, head, w3) - log.debug('handled') - prev_head = head - except Exception as x: - log.exception(x) - log.debug('runner worker exiting') + async with asyncio.timeout(1): # check running flag every second + head = await self.queue.get() + except TimeoutError: + log.debug('timeout in runner') + # 1 second has passed without a new head. Run the postprocess callbacks to check for activated time-based triggers + if prev_head is not None: + await self.handle_time_tick(head) + else: + try: + log.debug('handle head...') + await self.handle_head(chain, head, w3) + log.debug('handled') + prev_head = head + except Exception as x: + log.exception(x) + except: + log.exception('exception in runner worker') + raise + finally: + log.debug('runner worker exiting') async def handle_head(self, chain, blockhash, w3):