本文整理汇总了Python中inbox.heartbeat.store.HeartbeatStatusProxy.clear方法的典型用法代码示例。如果您正苦于以下问题:Python HeartbeatStatusProxy.clear方法的具体用法?Python HeartbeatStatusProxy.clear怎么用?Python HeartbeatStatusProxy.clear使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类inbox.heartbeat.store.HeartbeatStatusProxy
的用法示例。
在下文中一共展示了HeartbeatStatusProxy.clear方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: BaseSyncMonitor
# 需要导入模块: from inbox.heartbeat.store import HeartbeatStatusProxy [as 别名]
# 或者: from inbox.heartbeat.store.HeartbeatStatusProxy import clear [as 别名]
class BaseSyncMonitor(Greenlet):
"""
Abstracted sync monitor, based on BaseMailSyncMonitor but not mail-specific
Subclasses should run
bind_context(self, 'mailsyncmonitor', account.id)
poll_frequency : int
How often to check for commands.
retry_fail_classes : list
Exceptions to *not* retry on.
"""
def __init__(self, account_id, namespace_id, email_address, folder_id,
folder_name, provider_name, poll_frequency=1,
scope=None):
self.account_id = account_id
self.namespace_id = namespace_id
self.poll_frequency = poll_frequency
self.scope = scope
self.log = logger.new(account_id=account_id)
self.shutdown = event.Event()
self.heartbeat_status = HeartbeatStatusProxy(self.account_id,
folder_id,
folder_name,
email_address,
provider_name)
Greenlet.__init__(self)
def _run(self):
# Bind greenlet-local logging context.
self.log = self.log.new(account_id=self.account_id)
return retry_with_logging(self._run_impl, account_id=self.account_id,
logger=self.log)
def _run_impl(self):
# Return true/false based on whether the greenlet succeeds or throws
# and error. Note this is not how the mailsync monitor works
try:
while True:
# Check to see if this greenlet should exit
if self.shutdown.is_set():
self._cleanup()
return False
try:
self.sync()
self.heartbeat_status.publish(state='poll')
# If we get a connection or API permissions error, then sleep
# 2x poll frequency.
except ConnectionError:
self.log.error('Error while polling', exc_info=True)
self.heartbeat_status.publish(state='poll error')
sleep(self.poll_frequency)
sleep(self.poll_frequency)
except ValidationError:
# Bad account credentials; exit.
self.log.error('Error while establishing the connection',
account_id=self.account_id,
exc_info=True, logstash_tag='mark_invalid')
self._cleanup()
with session_scope(self.namespace_id) as db_session:
account = db_session.query(Account).get(self.account_id)
account.mark_invalid(scope=self.scope)
return False
def sync(self):
""" Subclasses should override this to do work """
raise NotImplementedError
def _cleanup(self):
self.heartbeat_status.clear()