feat: default values, general item excludes, images, queueManager to manage multi worker messaging to telegram to prevent too many connections

Signed-off-by: Omar Sánchez Pizarro <omar.sanchez@pistacero.net>
This commit is contained in:
Omar Sánchez Pizarro
2025-10-10 00:03:44 +02:00
parent 08c1577b2a
commit 0245b603b2
9 changed files with 275 additions and 114 deletions

View File

@@ -2,9 +2,12 @@ import json
import logging
from logging.handlers import RotatingFileHandler
from concurrent.futures import ThreadPoolExecutor
import threading
from datalayer.item_monitor import ItemMonitor
from datalayer.general_monitor import GeneralMonitor
from managers.worker import Worker
from managers.queue_manager import QueueManager
def configure_logger():
logging.getLogger("httpx").setLevel(logging.WARNING)
@@ -22,17 +25,22 @@ def configure_logger():
handlers=[console_handler, file_handler])
def parse_items_to_monitor():
with open("args.json") as f:
with open("workers.json") as f:
args = json.load(f)
items = [ItemMonitor.load_from_json(item) for item in args]
return items
if 'items' not in args:
raise ValueError("Missing mandatory field: items")
items = [ItemMonitor.load_from_json(item) for item in args['items']]
general_args = GeneralMonitor.load_from_json(args['general'])
return items, general_args
if __name__ == "__main__":
configure_logger()
items = parse_items_to_monitor()
items, general_args = parse_items_to_monitor()
with ThreadPoolExecutor(max_workers=10) as executor:
queue_manager = QueueManager()
with ThreadPoolExecutor(max_workers=1000) as executor:
for item in items:
worker = Worker(item)
worker = Worker(item, general_args, queue_manager)
executor.submit(worker.run)