פונקציות
- ndb.add_flow_exception(exc)
- מציינים שחריג לא צריך להירשם ביומן, אלא הוא רק חלק מזרימת התוכנית הרגילה. (בדרך כלל, העלאת חריגה כותבת הודעת אזהרה ליומנים של האפליקציה).
ארגומנטים
- exc
- מחלקה של חריגה שלא אמורה להירשם ביומן.
כברירת מחדל, היוצאים מן הכלל הבאים לא מתועדים ביומן:
webob.exc.HTTPException(ומחלקות המשנה שלה)ndb.Rollback
- ndb.delete_multi(keys, **ctx_options)
- מחיקת ישויות שזוהו על ידי רצף המפתחות שהועבר.
ארגומנטים
- keys
- רצף של מקשים
- **ctx_options
- אפשרויות הקשר
- ndb.delete_multi_async(keys, **ctx_options)
- מחיקה אסינכרונית של ישויות שזוהו על ידי רצף המפתחות שהועבר.
ארגומנטים
- keys
- רצף של מקשים
- **ctx_options
- אפשרויות הקשר
מחזירה רשימה של אובייקטים מסוג
Future. התוצאה של כל אירוע עתידי תהיהNone. - ndb.get_multi(keys, **ctx_options)
- Fetches entities identified by the passed sequence of keys.
ארגומנטים
- keys
- רצף של מקשים
- **ctx_options
- אפשרויות הקשר
הפונקציה מחזירה רשימה. כל פריט ברשימה הוא מופע של Model או
Noneאם המפתח לא נמצא. - ndb.get_multi_async(keys, **ctx_options)
- שליפת ישויות באופן אסינכרוני שזוהו על ידי רצף המפתחות שהועבר.
ארגומנטים
- keys
- רצף של מקשים
- **ctx_options
- אפשרויות הקשר
מחזירה רשימה של אובייקטים מסוג
Future. כל תוצאה עתידית היא מופע של Model אוNoneאם המפתח לא נמצא. - ndb.in_transaction()
- Returns a Boolean indicating whether a transaction is currently active.
- @ndb.non_transactional
@ndb.non_transactional(allow_existing=True) - Decorator כדי לוודא שפונקציה פועלת מחוץ לעסקה.
ארגומנטים:
- allow_existing
- If
True(ברירת המחדל) ואם הקוד קורא לפונקציה המעוטרת בעסקה, הפונקציה פועלת באופן עצמאי מהעסקה. אםFalseואם הפונקציה המקושטת מופעלת על ידי קוד בטרנזקציה, מוצג חריג.
- ndb.put_multi(entities, **ctx_options)
- מאחסן רצף של מופעים של Model.
ארגומנטים
- entities
- רצף של מופעים של Model
- **ctx_options
- אפשרויות הקשר
מחזירה רשימה עם המפתחות שמאוחסנים.
- ndb.put_multi_async(entities, **ctx_options)
- מאחסנת באופן אסינכרוני רצף של מופעים של Model.
ארגומנטים
- entities
- רצף של מופעים של Model
- **ctx_options
- אפשרויות הקשר
מחזירה רשימה של אובייקטים מסוג
Future. כל תוצאה של חיזוי עתידי תהיה מפתח מאוחסן. - ndb.transaction(callback, **ctx_options)
- הפעלת קריאה חוזרת בעסקה.
ארגומנטים
- callback
- פונקציה או tasklet להפעלה
- **ctx_options
- אפשרויות של עסקאות
מחזירה את מה שcallback מחזירה. מעלה את מה שcallback מעלה או חריגה של
TransactionFailedErrorאם העסקה נכשלת.כדי להעביר ארגומנטים לפונקציית קריאה חוזרת, משתמשים ב-lambda. לדוגמה,
def my_callback(key, inc): ... transaction(lambda: my_callback(Key(...), 1))
- ndb.transaction_async(callback, **ctx_options)
- הרצת קריאה חוזרת באופן אסינכרוני בעסקה.
ארגומנטים
- callback
- פונקציה או tasklet להפעלה
- **ctx_options
- אפשרויות של עסקאות
מחזירה
Future. הפונקציה מחזירה את מה שפונקציית callback מחזירה, או מעלה את מה שפונקציית callback מעלה, אוTransactionFailedErrorאם העסקה נכשלת.כדי להעביר ארגומנטים לפונקציית קריאה חוזרת, משתמשים ב-lambda. לדוגמה,
def my_callback(key, inc): ... transaction(lambda: my_callback(Key(...), 1))
- @ndb.transactional
@ndb.transactional(**ctx_options)
- Decorator שגורם להרצה אוטומטית של פונקציה בטרנזקציה.
ארגומנטים:
לדקורטור הזה יכולות להיות אפשרויות של טרנזקציות.
אפשרויות הקשר, אפשרויות עסקה
אפשרויות ההקשר מאפשרות לכם להפעיל פעולות ספציפיות במאגר הנתונים עם הגדרות שונות. לדוגמה, יכול להיות שתרצו לשנות את מדיניות הקריאה או את תאריך היעד של ה-RPC עבור בקשות ספציפיות. כדי לעשות את זה, אפשר להעביר אפשרויות הקשר כמעט לכל פעולה. חלק מהפונקציות שקשורות לעסקאות מקבלות אפשרויות לעסקאות, שכוללות אפשרויות נוספות בנוסף לקבוצה של אפשרויות הקשר.
הנה כמה דוגמאות לשימוש באפשרויות הקשר. כדי להגדיר את תאריך היעד של ה-RPC לשנייה אחת כשקוראים ישות, אפשר להשתמש ב:
key.get(deadline=1)
כדי להגדיר את זמן קצוב לתפוגה של Memcache ל-30 שניות כשכותבים ישות, אפשר להשתמש:
ent.put(ndb_memcache_timeout=30)
כדי למחוק פריט שנשמר במטמון ולטעון אותו מחדש, אפשר להשתמש בפקודה:
key.delete(use_datastore=False)
ארגומנטים מיוחדים של מילות מפתח options ו-config (שמשמעותם זהה מסיבות היסטוריות) מאפשרים לציין כמה אפשרויות כאובייקט Configuration. זה יכול להיות אובייקט ndb.ContextOptions או (עבור הפונקציות והדקורטורים של העסקאות) אובייקט ndb.TransactionOptions. לדוגמה, key.get(options=ndb.ContextOptions(use_cache=True)) שווה ל-key.get(use_cache=True). אפשר לבטל את האפשרויות שמוגדרות באובייקט אפשרויות כזה באמצעות פרמטרים של מילות מפתח.
אלה אפשרויות ההקשר שזמינות:
| אפשרות | סוג | תיאור |
|---|---|---|
deadline | float
| הגבלת משך הקריאה למאגר הנתונים, שצוינה כמספר שניות. (כברירת מחדל, השיחה מופסקת רק כשהזמן הקצוב לתהליך הטיפול בבקשה מסתיים). |
read_policy
| ndb.EVENTUAL_CONSISTENCY
| מגדירים את הערך הזה ל-ndb.EVENTUAL_CONSISTENCY אם רוצים לקבל תוצאות מהר יותר, גם אם הן לא עדכניות, במקום לחכות עד ש-Datastore יסיים להחיל שינויים על כל התוצאות שמוחזרות. |
force_writes
| bool
| קובעת אם בקשת כתיבה תצליח גם אם האפליקציה היא לקריאה בלבד. (ההגדרה הזו רלוונטית רק לתקופות קריאה בלבד שהמשתמשים שולטים בהן). |
use_cache | bool | המדיניות הזו קובעת אם לשמור ישויות במטמון בתוך התהליך. היא מבטלת את מדיניות המטמון בתוך התהליך עבור הפעולה הזו. |
use_memcache | bool | מציין אם לשמור ישויות ב-memcache. מבטל את מדיניות ה-memcache עבור הפעולה הזו. |
use_datastore | bool | ההגדרה קובעת אם לאחסן ישויות ב-Datastore. היא מבטלת את המדיניות של Datastore לגבי הפעולה הזו. |
memcache_timeout | int | משך החיים המקסימלי של ישויות ב-memcache. הערך הזה מבטל את מדיניות הזמן הקצוב לתפוגה של memcache עבור הפעולה הזו. |
max_memcache_items | int
| גודל הקבוצה המקסימלי לתכונת יצירת קבוצות אוטומטית של שיטות memcache של Context.
לדוגמה, עם גודל ברירת המחדל של max_memcache_items
(100), עד 100 פעולות הגדרה של memcache ישולבו לפעולה אחת של set_multi.
|
|
לגבי חלק מהפונקציות שקשורות לעסקאות, זמינות אפשרויות העסקה הבאות (בנוסף לאפשרויות ההקשר שמועברות בירושה שצוינו למעלה): | ||
| אפשרות | סוג | תיאור |
xg | bool
| אפשרות לבצע עסקאות בין קבוצות (XG).
False כברירת מחדל.
|
propagation | int
| NDB מספק תמיכה מוגבלת בעסקאות בתוך עסקאות, שנקראות 'עסקאות מקוננות'. פרמטר ההפצה קובע מה קורה אם הקוד מנסה להתחיל טרנזקציה מקוננת. מדיניות ההפצה של מדיניות ההפצה של הפרמטר propagation יכול לקבל אחד מהערכים הבאים:
|
retries | int
| כמה פעמים לנסות שוב באופן אוטומטי במקרה של כשלים בעסקאות. הערך אפס מציין ניסיון אחד בלבד, ללא ניסיון חוזר. |
במקרים מסוימים, המערכת מתעלמת מאפשרויות בגלל שמירה במטמון.
לדוגמה, אם מציינים תאריך יעד ל-RPC עבור פעולת קריאה שמתבצעת ממטמון בהקשר, המערכת מתעלמת מתאריך היעד.
לעומת זאת,
אפשרויות לא מוכרות גורמות להעלאת TypeError.
פעולות עם אפשרויות שונות מקובצות יחד כשמופעלת האפשרות 'אוסף אוטומטי של פעולות'. לדוגמה, אם משתמשים ב-put_async()
כדי לכתוב כמה ישויות עם deadline = 5
וכמה בלי לציין תאריך יעד, וכולן עומדות בדרישות לשימוש באוסף אוטומטי של פעולות, המערכת תיצור שתי קריאות RPC נפרדות – אחת לקבוצת הישויות עם deadline = 5
ואחת לקבוצה השנייה – גם אם תאריך היעד של ה-RPC שמוגדר כברירת מחדל הוא גם 5. זה קורה גם אם האפשרות שצוינה לא רלוונטית לפעולת ה-RPC (לדוגמה, ndb_should_cache).