פעולות ממושכות מוחזרות על ידי קריאות לשיטות של עיבוד באצווה, כי משך הזמן שנדרש להשלמתן ארוך מדי בשביל תגובת API. כך לא נשארים פתוחים תהליכי שיחה בזמן עיבוד של הרבה מסמכים. Document AI API יוצר LRO בכל פעם שמבצעים קריאה ל-projects.locations.processors.batchProcess דרך ה-API או ספריות הלקוח. ה-LRO עוקב אחרי הסטטוס של משימת העיבוד.
כדי לבדוק את הסטטוס של פעולות ממושכות, אפשר להשתמש בשיטות הפעולות ש-Document AI API מספק. אפשר גם לרשום, לשאול או לבטל פעולות LRO. ספריות לקוח שקוראות לשיטה אסינכרונית מבצעות סקר באופן פנימי, וכך מאפשרות קריאה חוזרת. (ב-Python, await מופעל). הן כוללות גם פרמטר של פסק זמן. בתוך ה-LRO הראשי שמוחזר על ידי .batchProcess, נוצר LRO לכל מסמך (כי מגבלות ספירת הדפים של אצווה גבוהות בהרבה מהקריאה ל-sync process, והעיבוד יכול להימשך זמן רב). כש-LRO הראשי מסתיים, מוצג הסטטוס המפורט של כל מסמך LRO.
מנהלים את פעולות ה-LRO Google Cloud ברמת הפרויקט והמיקום. כששולחים בקשה ל-API, צריך לכלול את ה Google Cloud פרויקט ואת המיקום שבו פועל ה-LRO.
רשומה של פעולה ארוכת טווח נשמרת למשך כ-30 יום אחרי שהפעולה מסתיימת, כלומר אחרי התקופה הזו אי אפשר לראות או לרשום פעולה ארוכת טווח.
קבלת פרטים על פעולה ממושכת
בדוגמאות הבאות אפשר לראות איך מקבלים פרטים על פעולת LRO.
REST
כדי לקבל את הסטטוס של LRO ולהציג פרטים לגביו, קוראים לשיטה 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. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
הצגת רשימה של פעולות ממושכות
בדוגמאות הבאות אפשר לראות איך מציגים את הפעולות הממושכות ב Google Cloud פרויקט ובמיקום מסוימים.
REST
כדי להציג רשימה של פעולות LRO ב Google Cloud פרויקט ובמיקום, צריך לבצע קריאה ל-method projects.locations.operations.list.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- LOCATION: המיקום שבו פועלות פעולות LRO, לדוגמה:
us– ארצות הבריתeu- האיחוד האירופי
- FILTER: (חובה) שאילתה ל-LRO להחזרה. אפשרויות:
- 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. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
דגימה של פעולה ממושכת
בדוגמאות הבאות אפשר לראות איך לשלוח שאילתה כדי לבדוק את הסטטוס של פעולה ארוכת טווח.
REST
כדי לדגום פעולה ממושכת, צריך להפעיל שוב ושוב את השיטה projects.locations.operations.get עד שהפעולה מסתיימת. צריך להשתמש בהשהיה לפני ניסיון חוזר בין כל בקשת בדיקה, למשל 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. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.