איך הדרך הנכונה יותר לתזמן משימות?
-
אני בעז״ה בונה פרויקט שאני מקבל מספר טלפון של לקוח, מתקשר אליו אחרי 24 שעות לשאול אותו (בהקשה על 1/2) האם הפניה נפתרה כבר או שנציג יתקשר אליו באופן מיוחד.
הבעיה היא שאם אני מקבל את זה בין השעות 11 בערב ל8 בבוקר , או ביום שישי אני לא יכול בדיוק 24 שעות כי זה ייפול על ״שעות לילה״ והלקוח לא יענה. או בשבת .
חשבתי לכתוב טבלא עם מספר טלפון , זמן להתקשר אליו. ועוד פרטים שאצטרך.
עכשיו בתזמון עצמו יש לי 2 אופציות ואני לא יודע מה עדיף.
-
לחשבן מראש מתי אני אצטרך להתקשר אליו ולהפעיל תזמון לאז (למשל אם התקשר בשישי ב10 בבוקר, לתזמן מראש סקריפט שיתקשר אליו בראשון ב 10 בבוקר)
מה שבעצם מייתר את הטבלא הנ״ל. -
א ) לחשבן מתי להתקשר אליו, ולרשום במסד.
ב) לתזמן ריצה כל דקה על פונקציה שתשאב מהמסד נתונים , ותבדוק אם צריך להתקשר למישהו הדקה הזאת.
הצדדים שלי הם כך :
מצד אחד בפונקציה הראשונה יהיה לי הרבה תהליכים שפועלים במתזמן ואני לא אוהב דברים כאלה ואם משהו ח״ו יקרוס אני מאבד את כל התזמונים שיצרתי.מצד שני באופציה השניה יהיה קריאה כל דקה למסד נתונים (וברוב הפעמים יחזיר ריק וייעצר הפונקציה אחרי שניה), אבל זה עדיף כי גם אם ח״ו קורא משהו, אני רק מפעיל מחדש את המתזמן, וזהו, אין לי פעולות שאיבדתי.
אני משתמש בpython , sqlite ומתזמן משימות לכאורה crontab (אף פעם עוד לא השתמשתי בו , אבל הגיע הזמן.)
-
-
@צבי-ש כתב באיך הדרך הנכונה יותר לתזמן משימות?:
ואם משהו ח״ו יקרוס אני מאבד את כל התזמונים שיצרתי
אם אתה משתמש ב-crontab זה קובץ על דיסק הקשיח, גם אם יהיה קריסה כללית במרכז הנתונים זה לא אמור ליאבד
אבל אני לא אוהב את הרעיון של תזמון המון משימות דרך crontab
אני הייתי הולך על אפשרות 2
לגבי ההסתייגות שלך,יהיה קריאה כל דקה למסד נתונים
א. זה ממש זול, לא צריך לחשוב על זה יותר מדי ב. אני מניח שההתקשרות לא חייב להיות אחרי 24 שעות על הדקה, אפשר לבדוק כל 10 דקות או אפילו כל חצי שעה, לא?
-
אני רציתי להצטרף לדעתו של @yossiz עם התודה שלי,
אבל לא ברור לי לגמרי המשפט האחרון שלו.
בכל מקרה אנחנו מפעילים מתזמן משימות, וכפי ש@yossiz אמר זה לא צריך להיות על הדקה (סליחה שאני מתערב בצרכים אבל לדעתי יכול להיות כל חצי שעה מצויין).
המתזמן מריץ סקריפט פייתון שבתחילה בודק אם אנחנו בשעות הפעילות (וזה יותר טוב מcron כי שעות הפעילות יכולים להיות משתנה דינמי במסד וכדומה ולא שינוי בcorn).
אם אנחנו בשעות פעילות, הוא מחפש לקוחות בטבלה שעונים על הקריטריון (עבר X שעות + עוד לא חזרו אליהם + ?). -
@aaron כתב באיך הדרך הנכונה יותר לתזמן משימות?:
לדעתי לשמור האם כבר התקשרת אליו, ואז פעם בשעה לבדוק למי עוד לא התקשרת והוא פתח את הפניה לפני יותר מ24 שעות.
כך כשתבצע שינוים בהחלטה מתי להתקשר אליו, תוכל לעשות את זה בלי לשנות את כל הטבלה מחדש.יש לי נתון למי שכבר התקשרתי,
בקריאה אני מבקש רק את מי שלא התקשרתי אליו עוד, והזמן להתקשרות הוא עד עוד שעה (ככה שגם אם איכשהוא פיספתי מישהו בסבבים הקודמים, אי מקבל אותו שוב.)
אחרי ההתקשרות אליו, אני עורך את הטבלא וכותב שהתקשרתי אליו כבר. ויותר אני לא מחייג -