Skip to content

Commit 78f293e

Browse files
author
DUYN
committed
Initial DataProviderExecutor
1 parent dcda13a commit 78f293e

File tree

3 files changed

+63
-112
lines changed

3 files changed

+63
-112
lines changed

bot/data/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
from typing import Dict, Any, List, Tuple
44

55
from bot import setup
6+
from bot.data.data_provider.data_provider import DataProvider
7+
from bot.data.data_provider_executor import DataProviderExecutor
68

79
logger = logging.getLogger(__name__)
810

bot/data/data_provider_executor.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import logging
2+
from typing import List, Dict, Tuple
3+
4+
from bot.utils import StoppableThread
5+
from bot.executors import WorkerExecutor
6+
from bot.events.observable import Observable
7+
from bot.data.data_provider.data_provider import DataProvider, DataProviderException
8+
9+
logger = logging.getLogger(__name__)
10+
11+
12+
class DataProviderExecutor(WorkerExecutor):
13+
14+
def __init__(self, data_providers: List[DataProvider] = None, max_workers: int = None) -> None:
15+
16+
if max_workers:
17+
super(DataProviderExecutor, self).__init__(max_workers=max_workers)
18+
else:
19+
super(DataProviderExecutor, self).__init__()
20+
21+
self._registered_data_providers: List[DataProvider] = []
22+
23+
if data_providers is not None:
24+
self._registered_data_providers = data_providers
25+
26+
def create_jobs(self) -> List[Tuple[Observable, StoppableThread]]:
27+
jobs: List[(Observable, StoppableThread)] = []
28+
29+
for data_provider in self._registered_data_providers:
30+
jobs.append((data_provider, StoppableThread(target=data_provider.start)))
31+
32+
return jobs
33+
34+
@property
35+
def registered_data_providers(self) -> List[DataProvider]:
36+
return self._registered_data_providers
37+
38+
39+
class ConfigDataProviderExecutor(DataProviderExecutor):
40+
41+
def __init__(self, config: Dict[str, any], data_providers: List[DataProvider] = None):
42+
43+
data_providers: List[DataProvider] = []
44+
45+
# Enable fmp data provider
46+
if config.get('data_provider', {}).get('fmp', {}).get('enabled', False):
47+
logger.info('Enabling data_provider.fmp ...')
48+
49+
try:
50+
logging.info("Initializing FMP data provider")
51+
from bot.data.data_provider.template.fmp_data_provider import FMPDataProvider
52+
data_providers.append(FMPDataProvider())
53+
except Exception as e:
54+
raise DataProviderException(str(e))
55+
56+
if data_providers is not None:
57+
58+
for data_provider in data_providers:
59+
data_providers.append(data_provider)
60+
61+
super(ConfigDataProviderExecutor, self).__init__(data_providers)

bot/data/data_provider_manager.py

Lines changed: 0 additions & 112 deletions
This file was deleted.

0 commit comments

Comments
 (0)