in provider/service.py [0:0]
def run(self):
self.canaryGenerator.start()
self.lastCanaryTime = datetime.now()
while True:
try:
if self.database is not None:
logging.info("Shutting down existing DB client")
self.database.destroy()
logging.info("Starting changes feed")
self.database = Database(timeout=changesFeedTimeout)
self.changes = self.database.changesFeed(timeout=changesFeedTimeout, since=self.lastSequence)
for change in self.changes:
# change could be None because the changes feed will timeout
# if it hasn't detected any changes. This timeout allows us to
# check whether or not the feed is capable of detecting canary
# documents
if change != None:
self.__handleDocChange(change)
# Record the sequence in case the changes feed needs to be
# restarted. This way the new feed can pick up right where
# the old one left off.
self.lastSequence = change['seq']
except Exception as e:
logging.error('[canary] Exception caught from changes feed. Restarting changes feed...')
logging.error(e)
self.stopChangesFeed()
logging.debug("[changes] I made it out of the changes loop!")