Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import functools
- import pymongo
- import logging
- import time
- MAX_AUTO_RECONNECT_ATTEMPTS = 5
- def graceful_auto_reconnect(mongo_op_func):
- """Gracefully handle a reconnection event."""
- @functools.wraps(mongo_op_func)
- def wrapper(*args, **kwargs):
- for attempt in xrange(MAX_AUTO_RECONNECT_ATTEMPTS):
- try:
- 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)
- time.sleep(wait_t)
- return wrapper
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement