פעולות ממושכות מוחזרות על ידי הפעלות method של עיבוד ברצף (batch processing), כי לוקח יותר זמן להשלים אותן מאשר תגובה מה-API. כך ה-thread של הקריאה לא נשאר פתוח בזמן שמעבדים הרבה מסמכים. Document AI API יוצר LRO בכל פעם שאתם קוראים ל-projects.locations.processors.batchProcess דרך ה-API או ספריות הלקוח. ה-LRO עוקב אחרי הסטטוס של משימת העיבוד.
אתם יכולים להשתמש בשיטות הפעולה ש-Document AI API מספק כדי לבדוק את הסטטוס של פעולות ממושכות. אפשר גם להציג, לדגום או לבטל פעולות LRO. ספריות לקוח שקוראות ל-method אסינכרוני מבצעות דגימה פנימית, ומאפשרות קריאה חוזרת (callback). (ב-Python, האפשרות await מופעלת). הם כוללים גם פרמטר של זמן קצוב לתפוגה. בתוך ה-LRO הראשי שמוחזר על ידי .batchProcess, נוצר LRO לכל מסמך (כי מגבלות מספר הדפים באצווה גבוהות בהרבה מהקריאה לסנכרון process, והעיבוד יכול להימשך זמן רב). כשה-LRO הראשי מסתיים, מוצג הסטטוס המפורט של כל LRO של מסמך.
הפעולות האלה מנוהלות ברמת הפרויקט והמיקום ב- Google Cloud . כששולחים בקשה ל-API, צריך לכלול את הפרויקט ב- Google Cloud ואת המיקום שבו פועלת ה-LRO.
הרשומה של LRO נשמרת למשך כ-30 יום אחרי שה-LRO מסתיים, כלומר אי אפשר להציג או לרשום LRO אחרי פרק הזמן הזה.
קבלת פרטים על פעולה ממושכת
הדוגמאות הבאות ממחישות איך לקבל פרטים על LRO.
REST
כדי לקבל את הסטטוס של LRO ולראות פרטים עליו, מפעילים את ה-method projects.locations.operations.get.
נניח שקיבלתם את התשובה הבאה אחרי ששלחתם קריאה ל-projects.locations.processors.batchProcess:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID"
}
הערך name בתגובה מראה שה-Document AI API יצר LRO בשם projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID.
אפשר גם לאחזר את שם ה-LRO באמצעות הצגת רשימה של פעולות ממושכות.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- LOCATION: המיקום שבו ה-LRO פועל, לדוגמה:
us– ארצות הבריתeu– האיחוד האירופי
- OPERATION_ID: מזהה הפעולה. המזהה הוא הרכיב האחרון בשם הפעולה. לדוגמה:
- שם הפעולה:
projects/PROJECT_ID/locations/LOCATION/operations/bc4e1d412863e626 - מזהה הפעולה:
bc4e1d412863e626
- שם הפעולה:
ה-method של ה-HTTP וכתובת ה-URL:
GET https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
PowerShell
מריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.documentai.v1.BatchProcessMetadata",
"state": "SUCCEEDED",
"stateMessage": "Processed 1 document(s) successfully",
"createTime": "TIMESTAMP",
"updateTime": "TIMESTAMP",
"individualProcessStatuses": [
{
"inputGcsSource": "INPUT_BUCKET_FOLDER/DOCUMENT1.ext",
"status": {},
"outputGcsDestination": "OUTPUT_BUCKET_FOLDER/OPERATION_ID/0",
"humanReviewStatus": {
"state": "ERROR",
"stateMessage": "Sharded document protos are not supported for human review."
}
}
]
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.documentai.v1.BatchProcessResponse"
}
}
Go
מידע נוסף מופיע במאמרי העזרה של Document AI Go API.
כדי לבצע אימות ב-Document AI, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Python
מידע נוסף מופיע במאמרי העזרה של Document AI Python API.
כדי לבצע אימות ב-Document AI, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
הצגת רשימה של פעולות ממושכות
בדוגמאות הבאות מוסבר איך להציג את רשימת ה-LRO בפרויקט ובמיקום ב- Google Cloud .
REST
כדי להציג רשימה של פעולות ה-LRO בפרויקט ובמיקום ב- Google Cloud , צריך להפעיל את ה-method projects.locations.operations.list.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- LOCATION: המיקום שבו פועלת פעולה אחת או יותר לטווח ארוך, לדוגמה:
us– ארצות הבריתeu– האיחוד האירופי
- FILTER: (חובה) שאילתה להחזרת פעולות לטווח ארוך. אפשרויות:
- TYPE: (חובה) סוג ה-LRO שרוצים להציג. אפשרויות:
BATCH_PROCESS_DOCUMENTSCREATE_PROCESSOR_VERSIONDELETE_PROCESSORENABLE_PROCESSORDISABLE_PROCESSORUPDATE_HUMAN_REVIEW_CONFIGHUMAN_REVIEW_EVENTCREATE_LABELER_POOLUPDATE_LABELER_POOLDELETE_LABELER_POOLDEPLOY_PROCESSOR_VERSIONUNDEPLOY_PROCESSOR_VERSIONDELETE_PROCESSOR_VERSIONSET_DEFAULT_PROCESSOR_VERSIONEVALUATE_PROCESSOR_VERSIONEXPORT_PROCESSOR_VERSIONUPDATE_DATASETIMPORT_DOCUMENTSANALYZE_HITL_DATABATCH_MOVE_DOCUMENTSRESYNC_DATASETBATCH_DELETE_DOCUMENTSDELETE_DATA_LABELING_JOBEXPORT_DOCUMENTS
ה-method של ה-HTTP וכתובת ה-URL:
GET https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations?filter=TYPE=TYPE
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations?filter=TYPE=TYPE"
PowerShell
מריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations?filter=TYPE=TYPE" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"operations": [
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.documentai.v1.BatchProcessMetadata",
"state": "SUCCEEDED",
"stateMessage": "Processed 1 document(s) successfully",
"createTime": "TIMESTAMP",
"updateTime": "TIMESTAMP",
"individualProcessStatuses": [
{
"inputGcsSource": "INPUT_BUCKET_FOLDER/DOCUMENT1.ext",
"status": {},
"outputGcsDestination": "OUTPUT_BUCKET_FOLDER/OPERATION_ID/0",
"humanReviewStatus": {
"state": "ERROR",
"stateMessage": "Sharded document protos are not supported for human review."
}
}
]
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.documentai.v1.BatchProcessResponse"
}
},
...
]
}
Go
מידע נוסף מופיע במאמרי העזרה של Document AI Go API.
כדי לבצע אימות ב-Document AI, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Python
מידע נוסף מופיע במאמרי העזרה של Document AI Python API.
כדי לבצע אימות ב-Document AI, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
דגימה של פעולה ממושכת
בדוגמאות הבאות אפשר לראות איך לבדוק את הסטטוס של LRO.
REST
כדי לדגום LRO, צריך להפעיל שוב ושוב את השיטה projects.locations.operations.get עד שהפעולה מסתיימת. צריך להשתמש בהשהיה לפני ניסיון חוזר (backoff) בין כל בקשת סקר, למשל 10 שניות.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הערכים בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud
- LOCATION: המיקום שבו פועלת ה-LRO
- OPERATION_ID: המזהה של ה-LRO
ה-method של ה-HTTP וכתובת ה-URL:
GET https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה כדי לדגום את הסטטוס של LRO כל 10 שניות:
while true; \ do curl -X GET \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"; \ sleep 10; \ done
אתם אמורים לקבל תגובת JSON כל 10 שניות.
בזמן שהפעולה מתבצעת, התשובה תכיל את הערך "state": "RUNNING".
כשהפעולה תסתיים, התגובה תכיל את "state": "SUCCEEDED" ו-"done": true.
PowerShell
מריצים את הפקודה הבאה כדי לדגום את הסטטוס של LRO כל עשר שניות:
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Do { Invoke-WebRequest ` -Method Get ` -Headers $headers ` -Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" | Select-Object -Expand Content sleep 10 } while ($true)
אתם אמורים לקבל תגובת JSON כל 10 שניות.
בזמן שהפעולה מתבצעת, התשובה תכיל את הערך "state": "RUNNING".
כשהפעולה תסתיים, התגובה תכיל את "state": "SUCCEEDED" ו-"done": true.
Python
מידע נוסף מופיע במאמרי העזרה של Document AI Python API.
כדי לבצע אימות ב-Document AI, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
ביטול של פעולה ממושכת
בדוגמאות הבאות מוסבר איך לבטל LRO בזמן שהוא פועל.
REST
כדי לבטל LRO, צריך להפעיל את ה-method projects.locations.operations.cancel.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- LOCATION: המיקום שבו ה-LRO פועל, לדוגמה:
us– ארצות הבריתeu– האיחוד האירופי
- OPERATION_ID: מזהה הפעולה. המזהה הוא הרכיב האחרון בשם הפעולה. לדוגמה:
- שם הפעולה:
projects/PROJECT_ID/locations/LOCATION/operations/bc4e1d412863e626 - מזהה הפעולה:
bc4e1d412863e626
- שם הפעולה:
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel"
PowerShell
מריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{}
"error": { "code": 400, "message": "Operation has completed and cannot be cancelled: 'PROJECT_ID/locations/LOCATION/operations/OPERATION_ID'.", "status": "FAILED_PRECONDITION" }
Go
מידע נוסף מופיע במאמרי העזרה של Document AI Go API.
כדי לבצע אימות ב-Document AI, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Python
מידע נוסף מופיע במאמרי העזרה של Document AI Python API.
כדי לבצע אימות ב-Document AI, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.