blob: 436943eeab7181ed39917a5deae82b0a46a41b16 [file]
"""Weather Agent application entry point"""
import logging
import signal
import threading
from weather_agent.handler.message_handler import handle_message
from weather_agent.rocketmq.mq_service import init_rocketmq, shutdown
# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def main():
"""Main entry point for Weather Agent application."""
logger.info("Starting Weather Agent...")
shutdown_event = threading.Event()
def signal_handler(signum, frame):
"""Handle termination signals for graceful shutdown."""
logger.info(f"Received signal {signum}")
shutdown_event.set()
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
try:
# Initialize RocketMQ clients with message handler
init_rocketmq(handle_message)
logger.info("Weather Agent started successfully")
# Wait for shutdown signal
shutdown_event.wait()
except Exception as e:
logger.error(f"Fatal error: {e}", exc_info=True)
finally:
shutdown()
logger.info("Weather Agent stopped")
if __name__ == "__main__":
main()