view mongo_required.py @ 22:ff73b95fc72f

frontend cleanups and improvements. this commit contains some future work too
author drewp@bigasterisk.com
date Mon, 17 Apr 2023 13:33:05 -0700
parents 838eb0223bdb
children
line wrap: on
line source

import contextlib
import os
import traceback

import pymongo
import pymongo.errors


@contextlib.contextmanager
def die_on_mongo_connection_errors():
    try:
        yield
    except pymongo.errors.ServerSelectionTimeoutError:
        traceback.print_exc()
        os.abort()


def open_mongo_or_die() -> pymongo.MongoClient:
    client = pymongo.MongoClient(host=os.environ['MONGODB_SERVICE_HOST'],
                                 tz_aware=True,
                                 connectTimeoutMS=3000,
                                 serverSelectionTimeoutMS=3000)
    with die_on_mongo_connection_errors():
        client.admin.command('ismaster')
    return client