Saya mempunyai kod python untuk memanggil api grafik dan menyemak imbas direktori pada titik kongsi. Direktori mempunyai 120gb fail dan mengambil masa berjam-jam untuk mengimbas. Walau bagaimanapun, saya memerhatikan bahawa skrip hanya kelihatan berjalan pada kod studio visual dan tidak dilaksanakan lagi. Saya mencetak nama fail dalam gelung dan selepas sejam ia berhenti memasukkan nama fail.
Adakah kerana token tamat tempoh dalam satu jam? Jika ya, mengapa saya tidak mendapat ralat yang menunjukkan bahawa token itu tidak sah?
# Define imports import requests # Copy access_token and specify the MS Graph API endpoint you want to call, e.g. 'https://graph.microsoft.com/v1.0/groups' to get all groups in your organization #access_token = '{ACCESS TOKEN YOU ACQUIRED PREVIOUSLY}' url = "[URL TO THE SHAREPOINT]" headers = { 'Authorization': access_token } consentfilecount=0 clientreportcount = 0 graphlinkcount = 0 while True:# #print(graph_result.json()['@odata.nextLink']) graph_result = requests.get(url=url, headers=headers) if ('value' in graph_result.json()): for list in graph_result.json()['value']: if(("Client Consent Form").lower() in list["name"].lower()): consentfilecount +=1 print(list["name"]) if(("Final Client Report").lower() in list["name"].lower()): clientreportcount +=1 print(list["name"]) #print(graph_result.json()) if('@odata.nextLink' in graph_result.json()): url = graph_result.json()['@odata.nextLink'] graphlinkcount += 1 else: break print(consentfilecount)
Tingkah laku yang anda gambarkan hampir pasti disebabkan oleh token pembawa yang anda gunakan yang sememangnya hanya sah selama sejam atau lebih.
Secara lalai, gelung requests
does not raise exceptions based solely on HTTP status codes 允许开发人员选择他们想要如何处理此类情况。在您的情况下,您的 while true:
terus berjalan, berjaya menghuraikan struktur json yang dikembalikan daripada respons ralat, tetapi tidak pernah benar-benar memenuhi mana-mana syarat dalam blok.
Jika anda benar-benar mahu skrip anda memberikan pengecualian pada kod respons http yang tidak berjaya, anda boleh menambah panggilan ke raise_for_status()
:
graph_result = requests.get(url=url, headers=headers) graph_result.raise_for_status()
Walau bagaimanapun, jika jangkaan masa beroperasi kod anda melebihi tempoh sah token, anda mungkin perlu menggunakan proses muat semula oauth yang betul dalam kod anda untuk mengelakkan ralat jenis ini daripada berlaku.
Atas ialah kandungan terperinci Kitaran hayat token pembawa Azure. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!