annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
1 import contextlib
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
2 import os
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
3 import traceback
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
4
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
5 import pymongo
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
6 import pymongo.errors
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
7
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
8
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
9 @contextlib.contextmanager
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
10 def die_on_mongo_connection_errors():
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
11 try:
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
12 yield
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
13 except pymongo.errors.ServerSelectionTimeoutError:
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
14 traceback.print_exc()
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
15 os.abort()
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
16
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
17
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
18 def open_mongo_or_die() -> pymongo.MongoClient:
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
19 client = pymongo.MongoClient(host=os.environ['MONGODB_SERVICE_HOST'],
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
20 tz_aware=True,
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
21 connectTimeoutMS=3000,
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
22 serverSelectionTimeoutMS=3000)
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
23 with die_on_mongo_connection_errors():
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
24 client.admin.command('ismaster')
838eb0223bdb cp mongo_required
drewp@bigasterisk.com
parents:
diff changeset
25 return client