diff --git a/src/backtesting.py b/src/backtesting.py index 54a311d..54e43fc 100644 --- a/src/backtesting.py +++ b/src/backtesting.py @@ -3,6 +3,7 @@ import logging import time import uuid +import eventlet import backtrader as bt import datetime as dt @@ -432,7 +433,7 @@ class Backtester: backtest_key, failure_results) # Start the backtest as a background task - self.socketio.start_background_task(execute_backtest) + eventlet.spawn(execute_backtest) def handle_backtest_message(self, user_id: str, msg_data: dict, socket_conn_id: str) -> dict: """ diff --git a/src/mapped_strategy.py b/src/mapped_strategy.py index c174403..928781f 100644 --- a/src/mapped_strategy.py +++ b/src/mapped_strategy.py @@ -3,6 +3,8 @@ import backtrader as bt import logging from typing import Dict + +import eventlet import pandas as pd from backtest_strategy_instance import BacktestStrategyInstance # Ensure correct import path @@ -117,6 +119,8 @@ class MappedStrategy(bt.Strategy): # Update progress if self.p.data_length: self.update_progress() + # Periodically yield to eventlet + eventlet.sleep(0) def execute_strategy(self): try: @@ -139,4 +143,5 @@ class MappedStrategy(bt.Strategy): {'reply': 'progress', 'data': {'progress': progress}}, room=self.p.socket_conn_id ) + logger.debug(f"Emitted progress: {progress}%") self.last_progress = progress