fix: improve order resilience with precision and minimum quantity fallbacks, and fix rate-limiting on account fetch
This commit is contained in:
@@ -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.")
|
||||
|
||||
Reference in New Issue
Block a user