אחסון ושליפה של נתונים

מזהה אזור

REGION_ID הוא קוד מקוצר ש-Google מקצה על סמך האזור שבוחרים כשיוצרים את האפליקציה. הקוד לא תואם למדינה או למחוז, למרות שחלק ממזהי האזורים עשויים להיראות דומים לקודים נפוצים של מדינות ומחוזות. באפליקציות שנוצרו אחרי פברואר 2020, REGION_ID.r נכלל בכתובות URL של App Engine. באפליקציות קיימות שנוצרו לפני התאריך הזה, מזהה האזור הוא אופציונלי בכתובת ה-URL.

מידע נוסף על מזהי אזורים

צריך לעדכן את שירות האינטרנט כדי להתחבר ל-Firestore ולטפל בנתונים דרך Firestore במצב Datastore ‏ (Datastore). אפשר להשתמש בספריות הלקוח של Datastore כדי לחבר את שירות האינטרנט ל-Datastore, מסד נתונים לא רלציוני (NoSQL) שמיועד להתאמה לעומס (automatic scaling), לביצועים גבוהים ולפיתוח אפליקציות בקלות.

בשלב הזה, מעדכנים את שירות האינטרנט כך שיאחסן נתונים של בקשות לדפים ב-Datastore, ואז יציג רשימה של עשר הבקשות האחרונות לדפים. המטרה כאן היא להפעיל את אחסון הנתונים בשירות האינטרנט לפני שמוסיפים את אימות ב-Firebase ומתאימים אישית את אחסון הנתונים למשתמשים מאומתים.

לפני שמתחילים

אם ביצעתם את כל השלבים הקודמים במדריך הזה, אתם יכולים לדלג על הקטע הזה. אם לא, מבצעים אחת מהפעולות הבאות:

  • מתחילים מהמאמר פיתוח אפליקציה ב-Python 3 ומשלימים את כל השלבים עד לשלב הזה.

  • אם כבר יש לכם Google Cloud פרויקט, אתם יכולים להמשיך ולהוריד עותק של שירות האינטרנט:

    1. מורידים את מאגר האפליקציה לדוגמה באמצעות Git:

      git clone https://github.com/GoogleCloudPlatform/python-docs-samples
      

      אפשרות נוספת היא להוריד את הדוגמה כקובץ ZIP ואז לחלץ אותה.

    2. עוברים אל הספרייה שמכילה עותק של הקבצים מהשלב הקודם:

      cd python-docs-samples/appengine/standard_python3/building-an-app/building-an-app-1
      
    3. מפעילים את Datastore API:

      gcloud services enable datastore.googleapis.com
      

אחסון ואחזור של ישויות Datastore

כדי לאחסן ולאחזר את זמני הבקשות באתר כרשומות ב-Datastore, צריך לבצע את הפעולות הבאות:

  1. מוסיפים את הקוד הבא לקובץ main.py:

    from google.cloud import datastore
    
    datastore_client = datastore.Client()
    
    def store_time(dt):
        entity = datastore.Entity(key=datastore_client.key("visit"))
        entity.update({"timestamp": dt})
    
        datastore_client.put(entity)
    
    
    def fetch_times(limit):
        query = datastore_client.query(kind="visit")
        query.order = ["-timestamp"]
    
        times = query.fetch(limit=limit)
    
        return times
    
    

    השיטה store_time שלמעלה משתמשת בספריות הלקוח של Datastore כדי ליצור ישות חדשה ב-Datastore. ישויות ב-Datastore הן אובייקטים של נתונים שמורכבים ממפתחות וממאפיינים. במקרה הזה, המפתח של הישות הוא הסוג המותאם אישית שלה, visit. לישות יש גם מאפיין אחד, timestamp, שמכיל את השעה של בקשת דף.

    השיטה fetch_times משתמשת במפתח visit כדי לשלוח שאילתה למסד הנתונים לגבי עשר הישויות האחרונות מסוג visit, ואז מאחסנת את הישויות האלה ברשימה בסדר יורד.

  2. מעדכנים את השיטה root כדי לקרוא לשיטות החדשות:

    @app.route("/")
    def root():
        # Store the current access time in Datastore.
        store_time(datetime.datetime.now(tz=datetime.timezone.utc))
    
        # Fetch the most recent 10 access times from Datastore.
        times = fetch_times(10)
    
        return render_template("index.html", times=times)
    
    
  3. מעדכנים את הקובץ templates/index.html כדי להדפיס את timestamp של כל ישות:

    <h2>Last 10 visits</h2>
    {% for time in times %}
      <p>{{ time['timestamp'] }}</p>
    {% endfor %}
  4. מוודאים שקובץ ה-requirements.txt כולל את כל הרכיבים התלויים הנדרשים:

    Flask==3.0.0
    google-cloud-datastore==2.15.1
    

מידע נוסף על ישויות, מאפיינים ומפתחות של Datastore זמין במאמר Entities, Properties, and Keys (ישויות, מאפיינים ומפתחות). מידע נוסף על שימוש בספריות לקוח של Datastore זמין במאמר ספריות לקוח של Datastore.

בדיקת שירות האינטרנט

בודקים את שירות האינטרנט על ידי הפעלתו באופן מקומי בסביבה וירטואלית:

  1. מריצים את הפקודות הבאות בספרייה הראשית של הפרויקט כדי להתקין יחסי תלות חדשים ולהריץ את שירות האינטרנט. אם לא הגדרתם סביבה וירטואלית לבדיקה מקומית, כדאי לעיין במאמר בנושא בדיקת שירות האינטרנט.

    pip install -r requirements.txt
    python main.py
    
  2. כדי לראות את שירות האינטרנט, מזינים את הכתובת הבאה בדפדפן האינטרנט:

    http://localhost:8080
    

אפשר לראות את הישויות שנוצרו על ידי שירות האינטרנט במסוףGoogle Cloud :

מעבר לדף של ישויות Datastore

פריסת שירות האינטרנט

אחרי ש-Datastore פועל באופן מקומי, אפשר לפרוס מחדש את שירות האינטרנט ב-App Engine.

מריצים את הפקודה הבאה מתיקיית הרמה הבסיסית (root) של הפרויקט, שבה נמצא הקובץ app.yaml:

gcloud app deploy

כל התנועה מנותבת אוטומטית לגרסה החדשה שפרסתם.

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

צפייה בשירות

כדי להפעיל במהירות את הדפדפן ולגשת לשירות האינטרנט בכתובת https://PROJECT_ID.REGION_ID.r.appspot.com, מריצים את הפקודה הבאה:

gcloud app browse

השלבים הבאים

אחרי ש-Datastore פועל עם שירות האינטרנט שלכם, אתם מוכנים ללמוד איך להוסיף את Firebase לשירות האינטרנט.