Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Gracefully handle a PyMongo AutoReconnect
import functools
import pymongo
import logging
import time
def graceful_auto_reconnect(mongo_op_func):
"""Gracefully handle a reconnection event."""
def wrapper(*args, **kwargs):
for attempt in xrange(MAX_AUTO_RECONNECT_ATTEMPTS):
return mongo_op_func(*args, **kwargs)
except pymongo.errors.AutoReconnect as e:
wait_t = 0.5 * pow(2, attempt) # exponential back off
logging.warning("PyMongo auto-reconnecting... %s. Waiting %.1f seconds.", str(e), wait_t)
return wrapper

This comment has been minimized.

Copy link

lucian1900 commented Jan 14, 2013

Interesting. I'm building something similar by subclassing pymongo.connection.Connection. However, I'm having trouble with it looping forever between 0 and 1 tries. I tried this with the same result.

What exactly is mongo_op_func here, if you don't mind?


This comment has been minimized.

Copy link

ahmedtalhakhan commented Feb 24, 2014

Might want to look at this Its pretty cool and gets incorporated into existing code with minimal changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.