דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. משתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?

משתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?

מתוזמן נעוץ נעול הועבר תכנות
12 פוסטים 4 כותבים 269 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yossizY מנותק
    yossizY מנותק
    yossiz
    השיב לצבי-ש ב נערך לאחרונה על ידי
    #2

    @צבי-ש כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

    מאות/אלפי קריאות ביום לsqlite

    זה כלום (אבל גם הכלום הזה מיותר, עיין להלן)

    כמו המסד נתונים רק בקובץ שזה קריאה יותר זריזה, ופחות כבדה

    https://www.sqlite.org/fasterthanfs.html
    הם טוענים שהם יותר מהירים ממערכת הקבצים
    אבל בסדר גודל שלך ההבדל הוא אינפיניטסימלי (ובעברית: לא רלוונטי כלל)

    או שבכלל יש דרך 4 שחברי הפורום יוכלו להחכים אותי בה?

    סתם מחשבה שעולה לי, תוכל לעשות פוקנציה שמרעננת את ההגדרות מקובץ ההגדרות או מסד הנתונים, איזה מהם שיהיה, לא משנה, ותעשה URL בשרת שקריאה אליו יפעיל את הפוקנציה

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    צבי-שצ תגובה 1 תגובה אחרונה
    4
    • צבי-שצ מחובר
      צבי-שצ מחובר
      צבי-ש
      השיב לyossiz ב נערך לאחרונה על ידי צבי-ש
      #3

      @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

      סתם מחשבה שעולה לי, תוכל לעשות פוקנציה שמרעננת את ההגדרות מקובץ ההגדרות או מסד הנתונים, איזה מהם שיהיה, לא משנה, ותעשה URL בשרת שקריאה אליו יפעיל את הפוקנציה

      את זה ניסתי להגדיר בלשוני כאן

      @צבי-ש כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

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

      אבל איך אני יכול לרענן את ההגדרות?
      ההגדרות הם במשתנים,אני פשוט יגדיר אותם מחדש?

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

      @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

      הם טוענים שהם יותר מהירים ממערכת הקבצים

      תודה על העדכון, זה ממש משנה לי את הצורת עבודה, לטובה.

      כיף לגלות דברים חדשים.
      חוק ה-50-50-90: בכל פעם שיש סיכוי של 50-50 שמשהו יעבוד, יש סיכוי של 90 אחוז שהוא לא. מקור

      yossizY תגובה 1 תגובה אחרונה
      0
      • yossizY מנותק
        yossizY מנותק
        yossiz
        השיב לצבי-ש ב נערך לאחרונה על ידי yossiz
        #4

        @צבי-ש כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

        את זה ניסתי להגדיר בלשוני כאן
        @צבי-ש כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

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

        האמת שלא הבנתי בדיוק את כוונתך בשורה זו:

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

        בכל מקרה אני לא מציע להקריס שום דבר, זה באמת פתרון עקום

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

        כן, בדיוק כך

        זה לא יהיה מוגבל רק לתוך הפונקציה ההגדרה של המשתנים?

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

        גוט שאבעס 🙂

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        צבי-שצ תגובה 1 תגובה אחרונה
        3
        • צבי-שצ מחובר
          צבי-שצ מחובר
          צבי-ש
          השיב לyossiz ב נערך לאחרונה על ידי צבי-ש
          #5

          @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

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

          אבל אם הפונקציה תגדיר אותם מחדש ההגדרה לא יהיה שייך לפונקציה עצמה?
          הוא יצא גם לסקופ?

          @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

          גוט שאבעס

          גוטע וואך

          כיף לגלות דברים חדשים.
          חוק ה-50-50-90: בכל פעם שיש סיכוי של 50-50 שמשהו יעבוד, יש סיכוי של 90 אחוז שהוא לא. מקור

          yossizY תגובה 1 תגובה אחרונה
          0
          • yossizY מנותק
            yossizY מנותק
            yossiz
            השיב לצבי-ש ב נערך לאחרונה על ידי yossiz
            #6

            @צבי-ש אביא לך דוגמה:
            קובץ settings.py

            _settings = db.get_settings()
            
            def get(setting):
                return _settings[setting]
            
            def refresh_settings():
                global _settings
                _settings = db.get_settings()
            

            קובץ callback.py

            import settings
            
            def calculate_callback_time(call_time):
                night_hours = settings.get("night_hours")
                return ... # your logic
            

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            צבי-שצ A 2 תגובות תגובה אחרונה
            3
            • צבי-שצ מחובר
              צבי-שצ מחובר
              צבי-ש
              השיב לyossiz ב נערך לאחרונה על ידי
              #7

              @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

              @צבי-ש אביא לך דוגמה:
              קובץ settings.py

              _settings = db.get_settings()
              
              def get(setting):
                  return _settings[setting]
              
              def refresh_settings():
                  global _settings
                  _settings = db.get_settings()
              

              קובץ callback.py

              import settings
              
              def calculate_callback_time(call_time):
                  night_hours = settings.get("night_hours")
                  return ... # your logic
              

              תודה רבה.

              כיף לגלות דברים חדשים.
              חוק ה-50-50-90: בכל פעם שיש סיכוי של 50-50 שמשהו יעבוד, יש סיכוי של 90 אחוז שהוא לא. מקור

              תגובה 1 תגובה אחרונה
              0
              • A מנותק
                A מנותק
                aaron
                כתב ב נערך לאחרונה על ידי
                #8

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

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

                aaron.tchumim@gmail.com
                Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

                ווצאפ API - תיעוד שירות API לא רשמי.

                clickoneC תגובה 1 תגובה אחרונה
                2
                • A מנותק
                  A מנותק
                  aaron
                  השיב לyossiz ב נערך לאחרונה על ידי
                  #9

                  @yossiz כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

                  @צבי-ש אביא לך דוגמה:
                  קובץ settings.py

                  _settings = db.get_settings()
                  
                  def get(setting):
                      return _settings[setting]
                  
                  def refresh_settings():
                      global _settings
                      _settings = db.get_settings()
                  

                  קובץ callback.py

                  import settings
                  
                  def calculate_callback_time(call_time):
                      night_hours = settings.get("night_hours")
                      return ... # your logic
                  

                  https://github.com/dribia/driconfig
                  אני משתמש בזה במעל 90% מהפרויקטי פייתון שלי.
                  הרווח הגדול הוא שאתה מקבל ולידציה על ההגדרות + type hints

                  aaron.tchumim@gmail.com
                  Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

                  ווצאפ API - תיעוד שירות API לא רשמי.

                  תגובה 1 תגובה אחרונה
                  1
                  • clickoneC מנותק
                    clickoneC מנותק
                    clickone
                    השיב לaaron ב נערך לאחרונה על ידי
                    #10

                    @aaron כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

                    ואחרי עריכה - ריסטארט לאפליקציה.

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

                    אני מאד מתחבר דווקא להצעה של @yossiz לעשות לינק שמרפרש את ההגדרות מהDB (או מכל מקור אחר)

                    אין טסט כמו פרודקשן.

                    המייל שלי urivpn@gmail.com

                    A תגובה 1 תגובה אחרונה
                    3
                    • A מנותק
                      A מנותק
                      aaron
                      השיב לclickone ב נערך לאחרונה על ידי
                      #11

                      @clickone כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

                      (או מכל מקור אחר)

                      @צבי-ש דיבר על שימוש בדוקר, לערוך את הקבצי הגדרות בלי לעשות ריסטארט לקונטיינר לא יטען את השינוים.

                      תשתמש ב gunicorn כדי שיטפל ב graceful shutdown. וLB כדי שישאר סרוויס זמין בזמן הזה, אבל באמת לא חושב שזה חשוב לך עד כדי כך..

                      כמובן שלטעון מהDB זה גם אפשרות, לדעתי צריך לטפל בsignals בכל מקרה, כך שאין סיבה להשתמש בDB ולא בקובץ הגדרות.

                      aaron.tchumim@gmail.com
                      Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

                      ווצאפ API - תיעוד שירות API לא רשמי.

                      A תגובה 1 תגובה אחרונה
                      0
                      • A מנותק
                        A מנותק
                        aaron
                        השיב לaaron ב נערך לאחרונה על ידי
                        #12

                        @aaron כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

                        @clickone כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

                        (או מכל מקור אחר)

                        @צבי-ש דיבר על שימוש בדוקר, לערוך את הקבצי הגדרות בלי לעשות ריסטארט לקונטיינר לא יטען את השינוים.

                        תשתמש ב gunicorn כדי שיטפל ב graceful shutdown. וLB כדי שישאר סרוויס זמין בזמן הזה, אבל באמת לא חושב שזה חשוב לך עד כדי כך..

                        כמובן שלטעון מהDB זה גם אפשרות, לדעתי צריך לטפל בsignals בכל מקרה, כך שאין סיבה להשתמש בDB ולא בקובץ הגדרות.

                        @צבי-ש כתב במשתנים יציבים שעלולים להשתנות מידי פעם. איך הדרך הנכונה להגדיר אותם?:

                        העניין הוא שאני רוצה לערוך שינויים באמצע דרך אתר חיצוני.

                        ככל שזה הסיבה, אז ודאי שלשמור בDB. אתה תחשוף API כדי לעדכן את המידע ובאותו קריאה גם לטעון את המידע החדש.

                        aaron.tchumim@gmail.com
                        Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

                        ווצאפ API - תיעוד שירות API לא רשמי.

                        תגובה 1 תגובה אחרונה
                        0

                        בא תתחבר לדף היומי!
                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום