簡體   English   中英

如何在處理API錯誤時中斷循環,以免丟失所有數據

[英]How to break for loop while handling API error so you don't lose all your data

我有一個for循環,不斷將參數傳遞給API。 我將從API調用中獲取響應,並將其附加到3個列表中。 for循環完成后,我將創建一個熊貓數據框,然后將其寫入.csv文件。

整個循環大約需要20分鍾才能運行,而我在10分鍾內就遇到了一個錯誤,因此我丟失了所有數據,然后才能將其寫入數據框,然后再寫入.csv文件。

您如何更好地處理這種情況?

# Create empty lists for data
email = []
is_disposable_address = []
mailbox_verification = []

for address in emails_to_validate:

    parameters = {"address": address}
    response = requests.get(url, params=parameters,
                auth=("api", "key"))

    email.append(address)
    is_disposable_address.append(response.json()["is_disposable_address"])
    mailbox_verification.append(response.json()["mailbox_verification"])

# Combine lists into dictionary and create dataframe
data = {"email_address": email,
        "is_disposable_address": is_disposable_address,
        "mailbox_verification": mailbox_verification}

dF = pd.DataFrame(data)

# Export to csv
dF.to_csv("emails.csv", index=False)

最簡單的解決方案是將循環包裝在try / catch塊中,如下所示:

try:
    for address in emails_to_validate:

        parameters = {"address": address}
        response = requests.get(url, params=parameters,
            auth=("api", "key"))

        email.append(address)
        is_disposable_address.append(response.json()["is_disposable_address"])
        mailbox_verification.append(response.json()["mailbox_verification"])

except Exception as e:
    print('An exception has occurred.  Giving up on loop:')
    print(e)

然后執行將繼續執行代碼的后續部分。

如果要繼續處理后續列表項,也可以將Try / Except塊放入循環中。

有關如何使用try / except以及對錯誤類型進行更多細微差別的條件的更多詳細信息,請參閱有關異常處理的文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM