changeset 16:838eb0223bdb

cp mongo_required
author drewp@bigasterisk.com
date Sun, 16 Apr 2023 03:17:48 -0700
parents 53d99454f394
children 071943adf000
files mongo_required.py
diffstat 1 files changed, 25 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /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