מזהה אזור
REGION_ID הוא קוד מקוצר ש-Google מקצה על סמך האזור שבוחרים כשיוצרים את האפליקציה. הקוד לא תואם למדינה או למחוז, למרות שחלק ממזהי האזורים עשויים להיראות דומים לקודים נפוצים של מדינות ומחוזות. באפליקציות שנוצרו אחרי פברואר 2020, REGION_ID.r נכלל בכתובות URL של App Engine. באפליקציות קיימות שנוצרו לפני התאריך הזה, מזהה האזור הוא אופציונלי בכתובת ה-URL.
בדף הזה מוסבר איך לשלוח בקשות HTTP(S) מאפליקציית App Engine באמצעות שירות אחזור של כתובות אתרים לדור השני של סביבות זמן ריצה.
לפני שמבצעים את ההוראות בדף הזה, מומלץ להשתמש בפתרונות אידיומטיים של שפה כדי להנפיק בקשות HTTP(S) לפני השימוש בשירות URL Fetch. מקרה השימוש העיקרי ב-URL Fetch הוא כשרוצים להנפיק בקשות HTTP(S) לאפליקציית App Engine אחרת ולאשר את הזהות של האפליקציה בבקשה הזו.
לפרטים על מגבלות גודל הבקשה ועל הכותרות שנשלחות בבקשת URL Fetch, אפשר לעיין במאמר בנושא בקשות יוצאות.
שליחת בקשת HTTP
כדי להשתמש בשירות אחזור של כתובות אתרים כדי לשלוח בקשות HTTP(S) יוצאות,
כדי להנפיק בקשת HTTP יוצאת, אפשר להשתמש בכל אחת מהספריות הבאות:
- כדי לשפר את ניידות הקוד, כדאי להשתמש בספרייה הרגילה של Python
urllib.requestכדי להנפיק בקשות HTTP. - משתמשים בספרייה של צד שלישי, כמו
requests. מבצעים קריאה מפורשת לספרייה
urlfetchומשתמשים בשיטהurlfetch.fetch.
urllib.request
מייבאים את ספריית urllib.request:
import urllib.request
לאחר מכן, משתמשים ב-urllib.request כדי לבצע את בקשת GET:
url = 'http://www.google.com/humans.txt'
try:
result = urllib.request.urlopen(url)
self.response.write(result.read())
except urllib.error.URLError:
logging.exception('Caught exception fetching url')
urlfetch
בקטעי הקוד הבאים אפשר לראות איך מבצעים בקשת HTTP בסיסית של GET באמצעות urlfetch. קודם כל, מייבאים את הספרייה urlfetch מ-App Engine SDK:
משתמשים ב-urlfetch כדי לבצע את בקשת GET:
בקטע הקוד הבא מוצג איך לבצע בקשה מתקדמת יותר, לשלוח נתונים מטופס אינטרנטי באמצעות בקשת HTTP POST באמצעות urlfetch:
הגדרת זמן קצוב לתפוגת בקשה
אפשר לשנות את ברירת המחדל של תאריך היעד באמצעות הפונקציה urlfetch.set_default_fetch_deadline(). הפונקציה הזו מאחסנת את תאריך היעד החדש שמוגדר כברירת מחדל במשתנה מקומי של השרשור, ולכן צריך להגדיר אותה לכל בקשה, למשל, בתוכנת ביניים מותאמת אישית.
השבתת ההפניות האוטומטיות
אם אתם משתמשים ב-URL Fetch, שירות אחזור של כתובות אתרים הבסיסי עוקב אחרי עד חמש הפניות אוטומטיות כברירת מחדל. ההפניות האלה יכולות להעביר מידע רגיש, כמו כותרות הרשאה, ליעד שאליו מתבצעת ההפניה מחדש. אם האפליקציה לא דורשת הפניות אוטומטיות של HTTP, מומלץ להשבית את ההפניות האוטומטיות.
כדי להנחות את שירות אחזור כתובות האתרים לא לעקוב אחרי הפניות אוטומטיות, מגדירים את הפרמטר follow_redirects של השיטה fetch לערך False.
שליחת בקשת HTTPS
כברירת מחדל, שירות אחזור של כתובות אתרים הבסיסי מאמת את האישור של המארח שאליו הוא מתחבר, ודוחה בקשות אם האישור לא תואם. אין צורך לאבטח את הבקשה באופן מפורש.
השבתת אימות של אישור מארח
כדי להשבית את האימות האוטומטי של אישור המארח ב-URL Fetch, צריך לשלוח בקשת HTTPS ולהגדיר את הפרמטר validate_certificate לערך False כשקוראים לשיטה urlfetch.fetch().
שליחת בקשה אסינכרונית
כברירת מחדל, בקשות HTTP(S) הן סנכרוניות. כדי לשלוח בקשה לא סנכרונית, האפליקציה צריכה:
- יוצרים אובייקט RPC חדש באמצעות
urlfetch.create_rpc(). האובייקט הזה מייצג את הקריאה האסינכרונית שלכם בהפעלות method עוקבות. - כדי להגיש את הבקשה, צריך להתקשר למספר
urlfetch.make_fetch_call(). השיטה הזו מקבלת את אובייקט ה-RPC ואת כתובת ה-URL של יעד הבקשה כפרמטרים. - מבצעים קריאה ל-method
get_result()של אובייקט RPC. השיטה הזו מחזירה את אובייקט התוצאה אם הבקשה מצליחה, ומעלה חריגה אם מתרחשת שגיאה במהלך הבקשה.
בקטעי הקוד הבאים אפשר לראות איך שולחים בקשה אסינכרונית בסיסית מאפליקציית Python. קודם מייבאים את הספרייה urlfetch מ-App Engine SDK:
לאחר מכן, משתמשים ב-urlfetch כדי לשלוח את הבקשה לא סנכרונית:
הגדרת זמן קצוב לתפוגת בקשה
כדי להגדיר זמן קצוב לתפוגה של הבקשה, מגדירים את הפרמטר deadline של ה-method urlfetch.create_rpc() כשיוצרים את אובייקט ה-RPC.
שימוש בפונקציית קריאה חוזרת
אפשר להגדיר פונקציית קריאה חוזרת לאובייקט ה-RPC. הפונקציה תופעל כשהאפליקציה שלכם תפעיל שיטה באובייקט – כמו wait(), checksuccess() או get_result() – שתגרום לאובייקט להמתין עד שהבקשה תושלם.
כדי להשתמש בפונקציית קריאה חוזרת לטיפול בתוצאה של קריאת האחזור:
- יוצרים פונקציית עזר כדי להגדיר את ההיקף של הקריאה החוזרת.
- יוצרים פונקציית handler כדי לטפל בתוצאה של קריאת ה-fetch.
- מגדירים את מאפיין
callbackשל אובייקט ה-RPC לפונקציית העזר.
בקטע הקוד הבא אפשר לראות איך מפעילים פונקציית קריאה חוזרת:
שליחת בקשה לאפליקציית App Engine אחרת
כשמשתמשים ב-URL Fetch כדי לשלוח בקשה לאפליקציית App Engine אחרת, האפליקציה יכולה לאמת את הזהות שלה על ידי הוספת הכותרת X-Appengine-Inbound-Appid לבקשה.
אם תנחו את שירות אחזור של כתובות אתרים לא לעקוב אחרי הפניות אוטומטיות, App Engine יוסיף את הכותרת הזו לבקשות באופן אוטומטי. הוראות להשבתת הפניות זמינות במאמר השבתת הפניות.
המאמרים הבאים
מידע על שירות אחזור של כתובות אתרים, כמו הכותרות שנשלחות בבקשת אחזור של כתובת URL, זמין במאמר בנושא בקשות יוצאות.