annotate mongo_required.py @ 49:1bd17c2e5517 default tip

video.py must sign video urls for serve-files.js to serve them
author drewp@bigasterisk.com
date Fri, 06 Dec 2024 17:13:51 -0800
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