| import os
|
| from api.app import create_app
|
|
|
| import threading
|
| import signal
|
|
|
| app = create_app()
|
|
|
| def _restart_process():
|
| print("Scheduled restart: exiting process to allow external restart.")
|
| os._exit(0)
|
|
|
| def _schedule_restart(hours: int):
|
| if hours > 0:
|
| timer = threading.Timer(hours * 3600, _restart_process)
|
| timer.daemon = True
|
| timer.start()
|
|
|
| if __name__ == "__main__":
|
| import sys
|
| host = os.environ.get("HOST", "0.0.0.0")
|
| port = int(os.environ.get("PORT", 5000))
|
| debug = os.environ.get("FLASK_DEBUG", "0") == "1"
|
|
|
| restart_hours = int(os.getenv("RESTART_AFTER_HOURS", "5"))
|
| _schedule_restart(restart_hours)
|
| try:
|
| app.run(host=host, port=port, debug=debug, use_reloader=False, threaded=True)
|
| except KeyboardInterrupt:
|
| print("Server gracefully stopped.")
|
| except OSError as e:
|
| if getattr(e, 'winerror', None) == 10038:
|
| print("Server gracefully stopped (socket released).")
|
| else:
|
| raise
|
| except BaseException:
|
| sys.exit(0) |