# HG changeset patch # User drewp@bigasterisk.com # Date 1681640268 25200 # Node ID 838eb0223bdbef371b61bb808252807f81814c03 # Parent 53d99454f394ce57caa4b24fa9b9361593a59c59 cp mongo_required diff -r 53d99454f394 -r 838eb0223bdb mongo_required.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mongo_required.py Sun Apr 16 03:17:48 2023 -0700 @@ -0,0 +1,25 @@ +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