fix: improve order resilience with precision and minimum quantity fallbacks, and fix rate-limiting on account fetch

This commit is contained in:
pie
2026-05-14 16:36:40 +01:00
parent fc9bb34d6b
commit 9e26623fc7
2 changed files with 70 additions and 23 deletions
+12 -4
View File
@@ -113,7 +113,8 @@ def run_ticker_lifecycle(client, yf_ticker, t212_ticker, tz, num_tickers):
params['ticker'] = t212_ticker
# Anti-thundering-herd: Random jitter to prevent 429s from parallel threads
time.sleep(random.uniform(0.1, 3.0))
# Use a larger range (1-10s) to better stagger independent threads
time.sleep(random.uniform(1.0, 10.0))
# Fetch Account Balance to calculate risk with backoff
for attempt in range(3):
@@ -129,8 +130,9 @@ def run_ticker_lifecycle(client, yf_ticker, t212_ticker, tz, num_tickers):
break
except Exception as e:
if '429' in str(e):
logger.warning(f"Rate limited on account fetch for {yf_ticker}. Retrying...")
time.sleep(2**(attempt+1))
wait_time = (attempt + 1) * 5 + random.uniform(1, 3)
logger.warning(f"Rate limited on account fetch for {yf_ticker}. Retrying in {wait_time:.1f}s...")
time.sleep(wait_time)
else:
logger.error(f"Failed to fetch account info: {e}")
break
@@ -270,4 +272,10 @@ def main():
flush_logs()
if __name__ == "__main__":
main()
try:
main()
except Exception as e:
logger.critical(f"FATAL ERROR in main: {e}", exc_info=True)
finally:
flush_logs()
logger.info("Bot process terminated.")