satdetect-dev / run.py
coderuday21's picture
Raise library GeoTIFF upload limit to 5 GB on dev.
5ae5432
Raw
History Blame Contribute Delete
1.81 kB
"""
Launcher for the Satellite Change Detection web app.
Ways to run this:
- Python IDLE: open this file, then Run > Run Module (F5)
- Double-click: works if .py files are associated with Python
- Terminal: python run.py
It starts the FastAPI server with uvicorn and opens your browser.
Stop the server with Ctrl+C in the terminal (or close the IDLE shell window).
"""
import os
import sys
import threading
import time
import webbrowser
HOST = "127.0.0.1"
PORT = 8000
def _open_browser_later(url: str):
# Give the server a moment to start, then open the browser once.
time.sleep(1.5)
try:
webbrowser.open(url)
except Exception:
pass
def main():
# Make sure `import app.main` works no matter where this is launched from.
here = os.path.dirname(os.path.abspath(__file__))
os.chdir(here)
if here not in sys.path:
sys.path.insert(0, here)
# Local runs use DDA dev UI + folder library unless already set
os.environ.setdefault("APP_MODE", "dda")
try:
import uvicorn
except ImportError:
print("ERROR: dependencies are not installed.")
print("Run this first: pip install -r requirements.txt")
sys.exit(1)
url = f"http://{HOST}:{PORT}"
print("Starting Satellite Change Detection...")
print(f"Open in your browser: {url}")
print("Press Ctrl+C to stop.\n")
threading.Thread(target=_open_browser_later, args=(url,), daemon=True).start()
# reload=False keeps it simple and IDLE-friendly. For live-reload during
# development, run instead: uvicorn app.main:app --reload --port 8000
uvicorn.run(
"app.main:app",
host=HOST,
port=PORT,
reload=False,
timeout_keep_alive=600,
)
if __name__ == "__main__":
main()