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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
12 פוסטים 4 כותבים 269 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • צבי-שצ מחובר
    צבי-שצ מחובר
    צבי-ש
    השיב ל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
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום