# HG changeset patch # User drewp@bigasterisk.com # Date 1668906315 28800 # Node ID f3a15a72448322e8829f383b993269b4ec03de10 # Parent bbc2431fd63432307d27a3020c4df6872183d7b2 mongo api and up-checking diff -r bbc2431fd634 -r f3a15a724483 link.py --- a/link.py Sat Nov 19 17:03:17 2022 -0800 +++ b/link.py Sat Nov 19 17:05:15 2022 -0800 @@ -17,7 +17,7 @@ if not doc['href']: raise ValueError("no link") self.extract(doc) - self.coll.update({'href': doc['href']}, doc, upsert=True, safe=True) + self.coll.update({'href': doc['href']}, doc, upsert=True) def extract(self, doc): forUsers = [] diff -r bbc2431fd634 -r f3a15a724483 lookup.py --- a/lookup.py Sat Nov 19 17:03:17 2022 -0800 +++ b/lookup.py Sat Nov 19 17:05:15 2022 -0800 @@ -24,8 +24,9 @@ from jadestache import Renderer from link import Links, NotFound from pagetitle import PageTitle - -db = pymongo.MongoClient(os.environ['MONGODB_SERVICE_HOST'], tz_aware=True)['href'] +from mongo_required import open_mongo_or_die, die_on_mongo_connection_errors +from get_agent import bottleGetAgent +db = open_mongo_or_die()['href'] pageTitle = PageTitle(db) links = Links(db) renderer = Renderer(search_dirs=['template'], debug=bottle.DEBUG) @@ -193,6 +194,7 @@ @bottle.route('//') +@die_on_mongo_connection_errors() def userLinks(user, tags): tags = parseTags(tags) log.info('userLinks user=%r tags=%r', user, tags) diff -r bbc2431fd634 -r f3a15a724483 mongo_required.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mongo_required.py Sat Nov 19 17:05:15 2022 -0800 @@ -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(): + 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 diff -r bbc2431fd634 -r f3a15a724483 pagetitle.py --- a/pagetitle.py Sat Nov 19 17:03:17 2022 -0800 +++ b/pagetitle.py Sat Nov 19 17:05:15 2022 -0800 @@ -45,5 +45,5 @@ 'title': title, 'getTime': datetime.datetime.now(tzlocal()) } - self.coll.insert(doc, safe=True) + self.coll.insert(doc) return doc['title']