This commit is contained in:
Ichinga Samuel
2024-12-01 00:15:45 +01:00
parent 61f6736fcb
commit 4a07cb7f18
2 changed files with 28 additions and 4 deletions
+12 -2
View File
@@ -1,7 +1,8 @@
import logging import logging
import asyncio
from aiomql.lib.bot import Bot from aiomql.lib.bot import Bot
from aiomql.contrib.strategies import FingerTrap from aiomql.contrib.strategies import FingerTrap, Chaos
from aiomql.contrib.symbols import ForexSymbol from aiomql.contrib.symbols import ForexSymbol
@@ -9,10 +10,19 @@ def sample_bot():
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s") logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")
syms = ["Volatility 75 Index", "Volatility 100 Index", "Volatility 50 Index"] syms = ["Volatility 75 Index", "Volatility 100 Index", "Volatility 50 Index"]
symbols = [ForexSymbol(name=sym) for sym in syms] symbols = [ForexSymbol(name=sym) for sym in syms]
strategies = [FingerTrap(symbol=symbol) for symbol in symbols] strategies = [Chaos(symbol=symbol) for symbol in symbols]
bot = Bot() bot = Bot()
bot.executor.timeout = 10
bot.add_coroutine(coroutine=sleep_run)
bot.add_strategies(strategies=strategies) bot.add_strategies(strategies=strategies)
bot.execute() bot.execute()
async def sleep_run():
while True:
print("Sleeping for 5 seconds")
await asyncio.sleep(5)
print("Hello World")
sample_bot() sample_bot()
+16 -2
View File
@@ -78,9 +78,16 @@ class Executor:
async def create_coroutines_task(self): async def create_coroutines_task(self):
"""""" """"""
task = asyncio.create_task(asyncio.gather(*self.coroutines, return_exceptions=True)) coros = [asyncio.create_task(coroutine) for coroutine in self.coroutines]
# task = asyncio.create_task(asyncio.gather(*coros, return_exceptions=False))
self.tasks.extend(coros)
# loop = asyncio.get_running_loop()
# loop.run_in_executor()
task = asyncio.gather(*coros, return_exceptions=True)
self.tasks.append(task) self.tasks.append(task)
await task await task
# await task
# return task
def run_coroutine_tasks(self): def run_coroutine_tasks(self):
"""Run all coroutines in the executor""" """Run all coroutines in the executor"""
@@ -109,12 +116,19 @@ class Executor:
while self.config.shutdown is False and self.config.force_shutdown is False: while self.config.shutdown is False and self.config.force_shutdown is False:
if self.timeout is not None and self.timeout < (asyncio.get_event_loop().time() - start): if self.timeout is not None and self.timeout < (asyncio.get_event_loop().time() - start):
self.config.shutdown = True self.config.shutdown = True
timeout = self.timeout or 120
await asyncio.sleep(timeout)
print("Shutting down executor")
for strategy in self.strategy_runners: for strategy in self.strategy_runners:
strategy.running = False strategy.running = False
self.executor.shutdown(wait=False, cancel_futures=True)
for task in self.tasks: for task in self.tasks:
task.cancel() task.cancel()
self.executor.shutdown(wait=False, cancel_futures=True)
# self.executor.shutdown(wait=False, cancel_futures=True)
if self.config.force_shutdown: if self.config.force_shutdown:
os._exit(1) os._exit(1)
except Exception as err: except Exception as err: