mirror of
https://github.com/hansjone/netx.git
synced 2026-10-09 04:20:45 +08:00
Extract channel/session modules and CLI guard, move UME sidebands out of main, and default NETX_RUN_INLINE_SCHEDULERS off so ops run python -m netx_api.worker. Co-authored-by: Cursor <cursoragent@cursor.com>
50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
"""Background worker process for long-running schedulers.
|
|
|
|
Default deployment: API has ``NETX_RUN_INLINE_SCHEDULERS=false``; run this
|
|
alongside the API:
|
|
|
|
python -m netx_api.worker
|
|
|
|
Starts: config_sync, lldp_collect, port_traffic tick loops.
|
|
UME WS / keepalive remain in the API process (token + alarm coordination).
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
import signal
|
|
import threading
|
|
import time
|
|
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format="%(asctime)s %(levelname)s %(name)s: %(message)s",
|
|
)
|
|
_log = logging.getLogger("netx.worker")
|
|
|
|
|
|
def main() -> None:
|
|
stop = threading.Event()
|
|
|
|
def _handle(_sig: int, _frame: object) -> None:
|
|
_log.info("shutdown signal received")
|
|
stop.set()
|
|
|
|
for sig in (signal.SIGINT, signal.SIGTERM):
|
|
try:
|
|
signal.signal(sig, _handle)
|
|
except Exception:
|
|
pass
|
|
|
|
from .ume_runtime import start_device_schedulers
|
|
|
|
start_device_schedulers()
|
|
_log.info("netx worker schedulers started (config_sync, lldp_collect, port_traffic)")
|
|
|
|
while not stop.is_set():
|
|
time.sleep(1.0)
|
|
_log.info("netx worker exiting")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|