[+] improve periodic processing
This commit is contained in:
parent
52df4b54d5
commit
10c012aba2
29
deps/test-task-2025-06-30-v1/python/online/fxreader/pr34/test_task_2025_06_30_v1/tickers_retrieval/emcont.py
vendored
29
deps/test-task-2025-06-30-v1/python/online/fxreader/pr34/test_task_2025_06_30_v1/tickers_retrieval/emcont.py
vendored
@ -94,16 +94,21 @@ class Emcont:
|
||||
only_symbols: Optional[set[str]] = None,
|
||||
request_timeout: float | int = 0.5,
|
||||
store_timeout: float | int = 0.5,
|
||||
request_period: float | int = 1,
|
||||
) -> None:
|
||||
last_retrieval = datetime.datetime.now()
|
||||
|
||||
assert request_timeout >= 0
|
||||
assert store_timeout >= 0
|
||||
|
||||
request_period_timedelta = datetime.timedelta(
|
||||
seconds=request_timeout
|
||||
)
|
||||
|
||||
while True:
|
||||
logger.info(dict(msg='started'))
|
||||
|
||||
entries : Optional[cls.rates_get_t.data_t] = None
|
||||
entries : Optional['Emcont.rates_get_t.data_t'] = None
|
||||
|
||||
try:
|
||||
try:
|
||||
@ -127,13 +132,27 @@ class Emcont:
|
||||
except:
|
||||
logger.exception('')
|
||||
|
||||
next_retrieval = last_retrieval + datetime.timedelta(seconds=1)
|
||||
next_retrieval = last_retrieval
|
||||
|
||||
wait_interval = (
|
||||
def wait_interval():
|
||||
return (
|
||||
next_retrieval - datetime.datetime.now()
|
||||
).total_seconds()
|
||||
|
||||
if wait_interval > 0:
|
||||
await asyncio.sleep(wait_interval)
|
||||
while True:
|
||||
next_retrieval += request_period_timedelta
|
||||
|
||||
if (
|
||||
wait_interval() > 0 or
|
||||
wait_interval() > request_period_timedelta.total_seconds() / 4
|
||||
):
|
||||
break
|
||||
else:
|
||||
logger.warning(dict(
|
||||
msg='skip period due to huge lag',
|
||||
))
|
||||
|
||||
if wait_interval() > 0:
|
||||
await asyncio.sleep(wait_interval())
|
||||
|
||||
last_retrieval = next_retrieval
|
||||
|
Loading…
Reference in New Issue
Block a user