本文整理汇总了Python中retrying.retry函数的典型用法代码示例。如果您正苦于以下问题:Python retry函数的具体用法?Python retry怎么用?Python retry使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了retry函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: retry
def retry(*dargs, **dkw):
defaults = dict(
retry_on_exception=retry_filter,
wait_exponential_multiplier=500,
wait_exponential_max=15000,
)
if len(dargs) == 1 and callable(dargs[0]):
return retrying.retry(**defaults)(dargs[0])
else:
dkw = dict(defaults, **dkw)
return retrying.retry(*dargs, **dkw)
开发者ID:pombredanne,项目名称:jenkins-github-poller,代码行数:12,代码来源:utils.py
示例2: retry_on_conflict
def retry_on_conflict(func):
def is_conflict(ex):
return isinstance(ex, exception.ConcurrentTransaction)
wrapper = retrying.retry(stop_max_attempt_number=11,
wait_random_min=0.0, wait_random_max=2.0,
retry_on_exception=is_conflict)
return wrapper(func)
开发者ID:MatMaul,项目名称:heat,代码行数:7,代码来源:resource.py
示例3: retry_database
def retry_database(fn):
"""Decorator to keep probing the database untill you succeed."""
_check_exception = functools.partial(check_exception, valid_exc=sa.exc.OperationalError)
r = retry(
retry_on_exception=_check_exception, wait_exponential_multiplier=1000,
wait_exponential_max=60000, stop_max_attempt_number=7)
return r(fn)
开发者ID:kimlaborg,项目名称:kmtools,代码行数:7,代码来源:_system_tools.py
示例4: _safe_mongo_call
def _safe_mongo_call(max_retries, retry_interval):
return retrying.retry(
retry_on_exception=lambda e: isinstance(
e, pymongo.errors.AutoReconnect),
wait_fixed=retry_interval * 1000,
stop_max_attempt_number=max_retries if max_retries >= 0 else None
)
开发者ID:pczerkas,项目名称:aodh,代码行数:7,代码来源:utils.py
示例5: rety_subprocess
def rety_subprocess(fn):
r = retry(
retry_on_exception=lambda exc:
_check_exception(exc, valid_exc=MySubprocessError),
wait_exponential_multiplier=1000,
wait_exponential_max=60000,
stop_max_attempt_number=7)
return r(fn)
开发者ID:ostrokach,项目名称:datapkg,代码行数:8,代码来源:_helper.py
示例6: mark
def mark(f):
"""Marks an entire test as eventually consistent and retries."""
__tracebackhide__ = True
return retry(
wait_exponential_multiplier=100,
wait_exponential_max=1500,
stop_max_attempt_number=5,
retry_on_exception=_retry_on_exception(AssertionError))(f)
开发者ID:mymtwcom,项目名称:python-repo-tools,代码行数:8,代码来源:eventually_consistent.py
示例7: wrapped
def wrapped(*args, **kwargs):
self = args[0]
new_fn = retrying.retry(
retry_on_result=_ofport_result_pending,
stop_max_delay=self.vsctl_timeout * 1000,
wait_exponential_multiplier=10,
wait_exponential_max=1000,
retry_on_exception=lambda _: False)(fn)
return new_fn(*args, **kwargs)
开发者ID:gampel,项目名称:neutron,代码行数:9,代码来源:ovs_lib.py
示例8: test_retry
def test_retry(self):
a = [1, 2]
k = {'a': 3, 'b': 4, 'cc': 5}
self.mox.StubOutWithMock(retrying, 'retry')
retrying.retry(
*a,
retry_on_exception=mox.IgnoreArg(),
wait_random_min=mox.IgnoreArg(),
wait_random_max=mox.IgnoreArg(),
**k
).AndReturn(lambda func: func)
func = self.mox.CreateMockAnything()
self.mox.StubOutWithMock(functools, 'wraps')
functools.wraps(func).AndReturn(lambda func: func)
func()
self.mox.ReplayAll()
orm.retry(*a, **k)(func)()
开发者ID:skyhigh-networks,项目名称:shinkansen,代码行数:18,代码来源:test_orm.py
示例9: retry_ssh
def retry_ssh(fn):
"""Retry doing something over an ssh connection."""
_check_exception = functools.partial(check_exception, valid_exc=paramiko.SSHException)
wrapper = retry(
retry_on_exception=_check_exception,
wait_exponential_multiplier=1_000,
wait_exponential_max=60_000,
stop_max_attempt_number=7)
return wrapper(fn)
开发者ID:kimlaborg,项目名称:jobsubmitter,代码行数:9,代码来源:utils.py
示例10: mark
def mark(f):
"""Marks an entire test as eventually consistent and retries."""
__tracebackhide__ = True
return retry(
wait_exponential_multiplier=WAIT_EXPONENTIAL_MULTIPLIER,
wait_exponential_max=WAIT_EXPONENTIAL_MAX_DEFAULT,
stop_max_attempt_number=STOP_MAX_ATTEMPT_NUMBER_DEFAULT,
retry_on_exception=_retry_on_exception(
(AssertionError, exceptions.GoogleCloudError)))(f)
开发者ID:GoogleCloudPlatform,项目名称:python-repo-tools,代码行数:9,代码来源:eventually_consistent.py
示例11: retry_archive
def retry_archive(fn):
"""Decorator to keep probing the database untill you succeed."""
from retrying import retry
from elaspic import errors
r = retry(
retry_on_exception=lambda exc:
_check_exception(exc, valid_exc=errors.Archive7zipError),
wait_fixed=2000,
stop_max_attempt_number=2)
return r(fn)
开发者ID:kimlaborg,项目名称:elaspic,代码行数:10,代码来源:helper.py
示例12: reply
def reply(self, reply=None, failure=None):
"""Send back reply to the RPC client
:param reply: Dictionary, reply. In case of exception should be None
:param failure: Tuple, should be a sys.exc_info() tuple.
Should be None if RPC request was successfully processed.
:return RpcReplyPikaIncomingMessage, message with reply
"""
if self.reply_q is None:
return
reply_outgoing_message = RpcReplyPikaOutgoingMessage(
self._pika_engine, self.msg_id, reply=reply, failure_info=failure,
content_type=self._content_type,
content_encoding=self._content_encoding
)
def on_exception(ex):
if isinstance(ex, pika_drv_exc.ConnectionException):
LOG.warning(
"Connectivity related problem during reply sending. %s",
ex
)
return True
else:
return False
retrier = retrying.retry(
stop_max_attempt_number=(
None if self._pika_engine.rpc_reply_retry_attempts == -1
else self._pika_engine.rpc_reply_retry_attempts
),
retry_on_exception=on_exception,
wait_fixed=self._pika_engine.rpc_reply_retry_delay * 1000,
) if self._pika_engine.rpc_reply_retry_attempts else None
try:
timeout = (None if self.expiration_time is None else
max(self.expiration_time - time.time(), 0))
with timeutils.StopWatch(duration=timeout) as stopwatch:
reply_outgoing_message.send(
reply_q=self.reply_q,
stopwatch=stopwatch,
retrier=retrier
)
LOG.debug(
"Message [id:'%s'] replied to '%s'.", self.msg_id, self.reply_q
)
except Exception:
LOG.exception(
"Message [id:'%s'] wasn't replied to : %s", self.msg_id,
self.reply_q
)
开发者ID:ChenXuJasper,项目名称:oslo.messaging,代码行数:54,代码来源:pika_message.py
示例13: create_image
def create_image(self, name):
"""
Create a new image based on this instance.
"""
image_id = self._ec2_instance.create_image(name)
# Sometimes, the image takes a while to register, so retry a few times
# if the image cannot be found
retry_decorator = retry(retry_on_result=lambda result: result is None,
stop_max_attempt_number=3, wait_fixed=1000)
image = retry_decorator(self._provider.compute.images.get)(image_id)
return image
开发者ID:gvlproject,项目名称:cloudbridge,代码行数:11,代码来源:resources.py
示例14: retry_database
def retry_database(fn):
"""Decorator to keep probing the database untill you succeed."""
from retrying import retry
import sqlalchemy as sa
r = retry(
retry_on_exception=lambda exc:
_check_exception(exc, valid_exc=sa.exc.OperationalError),
wait_exponential_multiplier=1000,
wait_exponential_max=60000,
stop_max_attempt_number=7)
return r(fn)
开发者ID:kimlaborg,项目名称:elaspic,代码行数:11,代码来源:helper.py
示例15: reply
def reply(self, reply=None, failure=None, log_failure=True):
"""Send back reply to the RPC client
:param reply: Dictionary, reply. In case of exception should be None
:param failure: Tuple, should be a sys.exc_info() tuple.
Should be None if RPC request was successfully processed.
:param log_failure: Boolean, not used in this implementation.
It present here to be compatible with driver API
:return RpcReplyPikaIncomingMessage, message with reply
"""
if self.reply_q is None:
return
reply_outgoing_message = RpcReplyPikaOutgoingMessage(
self._pika_engine, self.msg_id, reply=reply, failure_info=failure,
content_type=self._content_type,
content_encoding=self._content_encoding
)
def on_exception(ex):
if isinstance(ex, pika_drv_exc.ConnectionException):
LOG.warn(str(ex))
return True
else:
return False
retrier = retrying.retry(
stop_max_attempt_number=(
None if self._pika_engine.rpc_reply_retry_attempts == -1
else self._pika_engine.rpc_reply_retry_attempts
),
retry_on_exception=on_exception,
wait_fixed=self._pika_engine.rpc_reply_retry_delay * 1000,
) if self._pika_engine.rpc_reply_retry_attempts else None
try:
reply_outgoing_message.send(
reply_q=self.reply_q,
expiration_time=self.expiration_time,
retrier=retrier
)
LOG.debug(
"Message [id:'{}'] replied to '{}'.".format(
self.msg_id, self.reply_q
)
)
except Exception:
LOG.exception(
"Message [id:'{}'] wasn't replied to : {}".format(
self.msg_id, self.reply_q
)
)
开发者ID:shahar-stratoscale,项目名称:oslo.messaging,代码行数:53,代码来源:pika_message.py
示例16: retryable
def retryable(self, function):
@wraps(function)
def wrapper(*args, **kwargs):
self.maybe_wait()
response = function(*args, **kwargs)
backoff_interval = response.data.get('backoff', 0)
self.set_next_request_minimum_time(backoff_interval)
return response
return retry(
retry_on_exception=BackoffStrategy._retry_on_throttle_error,
**self._retry_kwargs
)(wrapper)
开发者ID:georgepsarakis,项目名称:python-stackexchange-api,代码行数:12,代码来源:api.py
示例17: get_publishers_retrying
def get_publishers_retrying(self):
"""Retry until at least one publisher appears"""
def retry_if_empty(publishers):
return not publishers
_retry = retrying.retry(retry_on_result=retry_if_empty)
@_retry
def _get_publishers():
return self.get_publishers()
return _get_publishers()
开发者ID:TonyChengTW,项目名称:OpenStack_Liberty_Control,代码行数:13,代码来源:base.py
示例18: with_retry
def with_retry(cls, methods):
"""
Wraps the given list of methods in a class with an exponential-back
retry mechanism.
"""
retry_with_backoff = retry(
retry_on_exception=lambda e: isinstance(e, BotoServerError),
wait_exponential_multiplier=1000,
wait_exponential_max=10000
)
for method in methods:
m = getattr(cls, method, None)
if isinstance(m, collections.Callable):
setattr(cls, method, retry_with_backoff(m))
return cls
开发者ID:expert360,项目名称:cfn-params,代码行数:15,代码来源:resolution.py
示例19: __init__
def __init__(self, url, http_method='GET', parser=None, stop_max_attempt_number=RETRY_COUNT, **kwargs):
self.url = url
for name, value in kwargs.items():
if isinstance(value, list) or isinstance(value, tuple):
kwargs[name] = ','.join(str(i) for i in value)
elif isinstance(value, datetime):
kwargs[name] = value.isoformat()
self.parser = parser
self.params = kwargs
self.http_method = http_method
self._data = None
self.error = None
# Retry only if SOURCE_NOT_AVAILABLE error
self._fetch_data = retry(
stop_max_attempt_number=stop_max_attempt_number,
retry_on_exception=lambda ex: isinstance(ex, RequestError) and ex.code == 504
)(self._fetch_data)
开发者ID:svartalf,项目名称:python-wargaming,代码行数:18,代码来源:meta.py
示例20: send_notification
def send_notification(self, target, ctxt, message, version, retry=None):
if retry is None:
retry = self._pika_engine.default_notification_retry_attempts
def on_exception(ex):
if isinstance(ex, (pika_drv_exc.ExchangeNotFoundException,
pika_drv_exc.RoutingException)):
LOG.warning("Problem during sending notification. %s", ex)
try:
self._declare_notification_queue_binding(target)
except pika_drv_exc.ConnectionException as e:
LOG.warning("Problem during declaring notification queue "
"binding. %s", e)
return True
elif isinstance(ex, (pika_drv_exc.ConnectionException,
pika_drv_exc.MessageRejectedException)):
LOG.warning("Problem during sending notification. %s", ex)
return True
else:
return False
retrier = retrying.retry(
stop_max_attempt_number=(None if retry == -1 else retry),
retry_on_exception=on_exception,
wait_fixed=self._pika_engine.notification_retry_delay * 1000,
)
msg = pika_drv_msg.PikaOutgoingMessage(self._pika_engine, message,
ctxt)
return msg.send(
exchange=(
target.exchange or
self._pika_engine.default_notification_exchange
),
routing_key=target.topic,
confirm=True,
mandatory=True,
persistent=self._pika_engine.notification_persistence,
retrier=retrier
)
开发者ID:ChenXuJasper,项目名称:oslo.messaging,代码行数:40,代码来源:impl_pika.py
注:本文中的retrying.retry函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论