56 lines
1.3 KiB
Python
56 lines
1.3 KiB
Python
import asyncio
|
|
import os
|
|
import sys
|
|
|
|
from src.daemons.registry import DAEMONS
|
|
from src.models.configs_read.daemons_json import daemons_config
|
|
|
|
|
|
async def run_one(daemon_name: str) -> None:
|
|
daemon_cls = DAEMONS.get(daemon_name)
|
|
if daemon_cls is None:
|
|
print(f"Unknown daemon: {daemon_name}. Available: {list(DAEMONS.keys())}")
|
|
sys.exit(1)
|
|
daemon = daemon_cls()
|
|
await daemon.run()
|
|
|
|
|
|
async def run_enabled_from_config() -> None:
|
|
|
|
daemons = []
|
|
|
|
for name in daemons_config.daemons:
|
|
name = name.strip()
|
|
if name not in DAEMONS:
|
|
print(f"Warning: unknown daemon '{name}' in config, skipping")
|
|
continue
|
|
daemons.append(DAEMONS[name]())
|
|
|
|
if not daemons:
|
|
print("No enabled daemons found in config")
|
|
sys.exit(1)
|
|
|
|
await asyncio.gather(*(d.run() for d in daemons))
|
|
|
|
|
|
async def main() -> None:
|
|
if len(sys.argv) < 2:
|
|
print("Usage: python run_daemon.py <daemon_name> | --all")
|
|
sys.exit(1)
|
|
|
|
arg = sys.argv[1]
|
|
if arg == "--all":
|
|
await run_enabled_from_config()
|
|
else:
|
|
await run_one(arg)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
asyncio.run(main())
|
|
except KeyboardInterrupt:
|
|
print('Interrupted')
|
|
try:
|
|
sys.exit(0)
|
|
except SystemExit:
|
|
os._exit(0) |