Python:重试,直到发生更改
我不明白这个简单的代码:Python:重试,直到发生更改,python,loops,google-api,continue,Python,Loops,Google Api,Continue,我不明白这个简单的代码: #!/usr/bin/env python # -*- coding: utf-8 -*- import time for val in "cacatcaca": try: if val == "c": print(val) time.sleep(0.5) if val == "a": print(val) time.sleep(0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
for val in "cacatcaca":
try:
if val == "c":
print(val)
time.sleep(0.5)
if val == "a":
print(val)
time.sleep(0.5)
except val == "t":
print('We are stock in the letter T')
time.sleep(0.5)
continue
结果是:
c
a
c
a
c
a
c
a
而我想要的是在时间结束前在't'
中获得库存:
c
a
c
a
We are stock in the letter T
We are stock in the letter T
We are stock in the letter T
...
...
...
我的目标是,当我收到一个['status']=='OVER\u QUERY\u LIMIT'
时,重用Google API的代码
我想继续尝试
JSON
响应,直到收到不同的结果 您在此处错误地使用了try-catch块
您应该将if-else语句中的所有条件放在try块下
如果有例外情况,请打印出来
for val in "cacatcaca":
try:
if val == "c":
print(val)
time.sleep(0.5)
elif val == "a":
print(val)
time.sleep(0.5)
elif val=="t":
print('We are stock in the letter T')
time.sleep(0.5)
except Exception as e:
print(e)
continue
此代码将打印“我们在字母t处有库存”,直到时间结束
import time
for val in 'cacatcaca':
if val == 'c' or val == 'a':
print(val)
time.sleep(0.5)
elif val == 't':
while val == 't':
print('We are stock at letter t')
对于可重用设计,我更喜欢使用基于以下代码的解决方案:
def fetch_google_api_until_works(*args, **kwargs):
ok = False
while not ok:
response = legacy_fetch_google_api(*args, **kwargs)
ok = response.get('status', False) != 'OVER_QUERY_LIMIT'
if not ok:
time.sleep(0.5)
return response
然后使用fetch_google_api_,直到_在应用程序代码中起作用