בעיות מוכרות

בדף הזה מפורטות בעיות מוכרות ב-Cloud Endpoints Frameworks.

‫Java ו-Python

בקטע הזה מתוארות בעיות מוכרות שמשפיעות על גרסאות Java ו-Python של Endpoints Frameworks.

זמן קצוב לתפוגה של בקשה

בממשקי API שמשתמשים בגרסה 2 של Endpoints Frameworks, הזמן הקצוב לתפוגה של הבקשה הוא 60 שניות.

העברה של Endpoints Frameworks

כשמעבירים את ה-API ל-Endpoints Frameworks גרסה 2, צריך לפרוס את ה-API לאפליקציית App Engine חדשה. אם משתמשים מחדש באפליקציית App Engine הישנה, יכול להיות שבקשות שמתחילות בנתיב של גרסה 1, /_ah/spi, ינותבו אל העורף של Endpoints Frameworks גרסה 2, שבו הנתיבים צריכים להתחיל ב-/_ah/api.

ביצועים נמוכים במופעים של שינוי גודל אוטומטי

ב-App Engine יש שלושה סוגים של התאמה לעומס: בסיסית, ידנית ואוטומטית. ‫Endpoints Frameworks משתמש בשרשורים ברקע, שמופעים של התאמה אוטומטית לעומס לא תומכים בהם. מסגרות Endpoints צריכות לתקשר עם שירותי Google כדי לבדוק מכסות ולדווח על פעילות API, בין היתר. במקרים של מופעים עם קנה מידה בסיסי ומופעים עם קנה מידה ידני, שרשור ברקע מבצע את התקשורת הזו כדי למנוע האטה של הבקשות. עם זאת, מקרים של התאמה אוטומטית לעומס (automatic scaling) לא תומכים בשרשורים ברקע. במקום זאת, התקשורת עם שירותי Google מתבצעת במהלך הבקשה. המסגרות של נקודות הקצה עדיין פועלות, אבל יכול להיות שהביצועים שלהן יהיו פחות טובים.

בגלל הבעיה הזו, כדאי להגדיר סוג אחר של שינוי גודל. אפשר לעיין בקטעים הבאים בתיעוד של App Engine:

אין תמיכה בנתיבים עם לוכסנים בסוף

כשפורסים מסמך OpenAPI באמצעות gcloud endpoints services deploy,‏ Cloud Endpoints דוחה מסמכי OpenAPI שכוללים נתיבים עם לוכסן בסוף, למשל:

paths:
  "/echo/":
    post:
      description: "Echo back a given message."

ב-Endpoints Frameworks, צריך להסיר את קו הנטוי בסוף ב-Python method decorator או ב-Java method annotation.

Java

בקטע הזה מתוארות בעיות מוכרות ב-Endpoints Frameworks for Java.

‫Cloud Endpoints Frameworks for Java – גרסה 1.0.14 או גרסה ישנה יותר

כולל בעיה שבה שדות חדשים בהגדרת שירות Google גורמים לכך שהספרייה Cloud Endpoints Frameworks Java נכשלת בניתוח של הגדרת השירות. אם משתמשים בהגדרות שירות שנוצרו אחרי 5 בדצמבר 2024, השגיאות יהיו דומות לשגיאות הבאות:

Failed to parse the HTTP response as service configuration
com.google.api.config.ServiceConfigException: Failed to parse the HTTP response as service configuration

מידע נוסף על שדרוג לגרסה 1.0.15 ואילך זמין בהערות הגרסה.

מסגרות (frameworks) של נקודות קצה (endpoints) ב-Java מדור קודם (גרסה 1)

בגרסה 1 של Endpoints Frameworks ל-Java יש באג שגורם לחריגה כשמבצעים הערה של enum. הבעיה הזו נגרמת בגלל תלות בגרסה ישנה של Jackson. כדי לעקוף את הבעיה, צריך לעבור לגרסה 2 של Endpoints Frameworks.

Python

בקטע הזה מתוארות בעיות מוכרות ב-Endpoints Frameworks for Python.

הודעת שגיאה: ImportError: cannot import name locked_file

כשמריצים את pip install עם קובץ requirements.txt, יכול להיות שתופיע הודעת השגיאה ImportError: cannot import name locked_file. הבעיה נגרמת כש-pip מתקין גרסה של חבילת oauth2client שלא תואמת ל-google-endpoints-api-management. כדי לעקוף את הבעיה, צריך לוודא שהשורות google-endpoints ו-google-endpoints-api-management מופיעות ראשונות בקובץ requirements.txt. לדוגמה:

google-endpoints==4.8.0
google-endpoints-api-management==1.11.1
# Newer versions of rsa module are incompatible with Python 2.7
rsa==4.5; python_version < '3'

מוסיפים דרישות אחרות אחרי השורות האלה.

ה-API מחזיר שגיאות 404 כשבודקים באופן מקומי

תסמין: כל נקודות הקצה מחזירות 404 כשמשתמשים ב-dev_appserver.py כדי לבדוק את ה-API באופן מקומי, אבל כשפורסים את ה-API ב-App Engine, נקודות הקצה מגיבות כמצופה. הבעיה הזו נצפתה באפליקציות שמשתמשות בספריית Django-six.

הבעיה הזו נגרמת בגלל התנגשות גרסאות בין ספריית python-future, שכלולה גם בספריית Endpoints Frameworks for Python וגם בספריית Django-six. הגרסה המדויקת של ספריית Django-six שגורמת לסכסוך לא ידועה בשלב הזה.