我正在尝试向Oracle推广。如果我的连接失败,则作业失败。相反,我想设置一些连接重试限制,以确保其尝试按照该限制重新连接,然后在未连接时使作业失败。
请建议我们如何实现此目标。
答案 0 :(得分:1)
让我们假设您正在使用PySpark。最近,我在项目中使用了它,因此我知道它可以工作。
我使用了重试PyPi项目 retry 0.9.2
及其应用程序通过了广泛的测试过程
我使用Python类保存与重试相关的配置。
class RetryConfig:
retry_count = 1
delay_interval = 1
backoff_multiplier = 1
我从运行时配置中收集了应用程序参数,并将其设置如下:
RetryConfig.retry_count = <retry_count supplied from config>
RetryConfig.delay_interval = <delay_interval supplied from config>
RetryConfig.backoff_multiplier = <backoff_multiplier supplied from config>
然后在连接数据库的方法调用上应用了
@retry((Exception), tries=RetryConfig.retry_count, delay=RetryConfig.delay_interval, backoff=RetryConfig.backoff_multiplier)
def connect(connection_string):
print("trying")
obj = pyodbc.connect(connection_string)
return obj
每次重试,Backoff都会增加Backoff乘数的延迟,这是一个非常常见的功能要求。
干杯!