browsertrix/backend/btrixcloud/main_op.py
2025-01-29 16:57:06 -05:00

64 lines
1.4 KiB
Python

"""entrypoint module for operator"""
import os
import sys
from fastapi import FastAPI
from .operator import init_operator_api
from .ops import init_ops
from .utils import register_exit_handler
app_root = FastAPI()
# ============================================================================
# pylint: disable=too-many-function-args, duplicate-code
def main():
"""init operator"""
# pylint: disable=import-outside-toplevel
if not os.environ.get("KUBERNETES_SERVICE_HOST"):
print(
"Sorry, the Browsertrix Backend must be run inside a Kubernetes environment.\
Kubernetes not detected (KUBERNETES_SERVICE_HOST is not set), Exiting"
)
sys.exit(1)
(
org_ops,
crawl_config_ops,
_,
crawl_ops,
_,
page_ops,
coll_ops,
_,
storage_ops,
background_job_ops,
event_webhook_ops,
_,
) = init_ops()
return init_operator_api(
app_root,
crawl_config_ops,
crawl_ops,
org_ops,
coll_ops,
storage_ops,
event_webhook_ops,
background_job_ops,
page_ops,
)
# ============================================================================
@app_root.on_event("startup")
async def startup():
"""init on startup"""
register_exit_handler()
settings = main()
await settings.async_init()