diff --git a/lbry/wallet/server/session.py b/lbry/wallet/server/session.py index 89701a6c3d..fbe721d02e 100644 --- a/lbry/wallet/server/session.py +++ b/lbry/wallet/server/session.py @@ -1275,10 +1275,9 @@ async def address_subscribe(self, *addresses): address: the address to subscribe to""" if len(addresses) > 1000: raise RPCError(BAD_REQUEST, f'too many addresses in subscription request: {len(addresses)}') - hashXes = [ - (self.address_to_hashX(address), address) for address in addresses + return [ + await self.hashX_subscribe(self.address_to_hashX(address), address) for address in addresses ] - return [await self.hashX_subscribe(*args) for args in hashXes] async def address_unsubscribe(self, address): """Unsubscribe an address. @@ -1553,15 +1552,14 @@ async def transaction_get_batch(self, *tx_hashes): else: batch_result[tx_hash] = [raw_tx, {'block_height': -1}] - def threaded_get_merkle(): + if needed_merkles: for tx_hash, (raw_tx, block_txs, pos, block_height) in needed_merkles.items(): batch_result[tx_hash] = raw_tx, { 'merkle': self._get_merkle_branch(block_txs, pos), 'pos': pos, 'block_height': block_height } - if needed_merkles: - await asyncio.get_running_loop().run_in_executor(self.db.executor, threaded_get_merkle) + await asyncio.sleep(0) # heavy call, give other tasks a chance self.session_mgr.tx_replied_count_metric.inc(len(tx_hashes)) return batch_result