私は、コードが動作するまで、または指定された回数の試行が完了するまで、何らかのコードを繰り返し実行しようとする小さなコンテキストマネージャを作成しようとしています。私はこれを記述しようとしましたが、コンテクストマネージャーに問題が発生したときに問題が発生しました:Pythonコンテキストマネージャはどのようにしてコードを実行できますか?
どのようにコードする必要がありますか?
import contextlib
import random
def main():
with nolube():
print(1/random.randint(0, 1))
@contextlib.contextmanager
def nolube(
tries = None # None: try indefinitely
):
"""
Create a context for trying something repeatedly.
"""
tries_done = 0
rekt = True
if tries is None:
while rekt is True:
try:
yield
rekt = False
except:
tries_done += 1
pass
else:
while rekt is True and tries_done <= tries:
try:
yield
rekt = False
except:
tries_done += 1
pass
if __name__ == "__main__":
main()
'retrying'パッケージはしばらく更新されていません。しかし、維持されている[靭性](https://pypi.python.org/pypi/tenacity)というフォークがあります。 – TimB
@TimB:ヘッドアップありがとう、私は代わりに頑強さをお勧めする答えを編集しました。 –