Performance improvements (#19)

* fix: increase the wait time for re-connecting to a relay

* fix: blocking sleep

* fix: remove blocking sleep

* fix: allow multiple filters per request
This commit is contained in:
Vlad Stan 2023-09-12 15:06:28 +03:00 committed by GitHub
parent 9d9fbc0189
commit e6624f76bd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 18 deletions

View file

@ -1,4 +1,5 @@
import asyncio
import ssl
import threading
import time
@ -95,20 +96,22 @@ class RelayManager:
)
self.threads[relay.url].start()
def wrap_async_queue_worker():
asyncio.run(relay.queue_worker())
self.queue_threads[relay.url] = threading.Thread(
target=relay.queue_worker,
target=wrap_async_queue_worker,
name=f"{relay.url}-queue",
daemon=True,
)
self.queue_threads[relay.url].start()
def _restart_relay(self, relay: Relay):
if relay.error_threshold_reached:
time_since_last_error = time.time() - relay.last_error_date
if time_since_last_error < 60 * 60 * 2: # last day
return
relay.error_counter = 0
relay.error_list = []
time_since_last_error = time.time() - relay.last_error_date
min_wait_time = min(60 * relay.error_counter, 60 * 60 * 24) # try at least once a day
if time_since_last_error < min_wait_time:
return
logger.info(f"Restarting connection to relay '{relay.url}'")