none
יצירת פונקציה שרצה כל 5 דקות בשרתי אז'ור RRS feed

  • שאלה

  • צהרים טובים,

    כתבתי פונקצית טיימר בC#

    והיא באמת רצה כל 5 דקות, אך כשהעלתי אותה לשרת של אז'ור היא לא רצה..

    מה הדרך לעשות את זה?

    יום שלישי 30 אפריל 2019 10:34

תשובות

  • אם אתה עובד ב- Asp.Net Core, אז אתה יכול להשתמש ב- IHostedService כדי לבנות BackgroundTask שיכול לרוץ על טיימר

    https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-3.1&tabs=visual-studio

    עם זאת, אם השרת שלך לא עושה שום דבר אחר חוץ מזה, ובמידה ואין עוד שיקולים, אז יהיה יותר פשוט וכנראה יותר זול להריץ Azure Function עם Timer.

    הכל תלוי בצרכים שלך.

    יום חמישי 11 יוני 2020 10:28
  • היי,

    אפליקציית ASP.Net לא מתאימה כל כך לעבודה עם טיימר מכיוון שמדובר על אפליקציה שמבוססת על REST (הטריגר להפעלה הוא הלקוח שפונה אל האפליקציה).

    תבדקי אם את יכולה לעבוד עם  Azure function או Azure Webjob


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום רביעי 01 מאי 2019 13:54
    מנחה דיון
  • אני נתקלתי בבעיות אחרות כמו שהזכרתי מעל. אפיקציית asp.net ישנה (sleep) עד שמתקבלת קריאה אליה ולכן פעולות מתוזמנות לא עובדות טוב. כאשר יש שליטה על ה IIS אז אפשר לקבוע את האפליקציה תקבל פינג ותאר במצב ער אבל בענן אין לנו שליטה על זה. פעולות כאלה פשוט לא מתאימות לאפליקציות asp.net אלא יותר לשירותים (במכונה מקומית למשל נוכל לעבוד עם שרתים כמו wcf)

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


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום חמישי 02 מאי 2019 18:07
    מנחה דיון

כל התגובות

  • שלום שרה,

    לאיזה שרת העלית אותה?

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


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום שלישי 30 אפריל 2019 13:42
    מנחה דיון
  • פרט לכך, בלי לראות קוד, הודעות שגיאה, צילומי מסך, וכו' אנחנו יכולים רק לנחש דברים

    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום שלישי 30 אפריל 2019 13:43
    מנחה דיון
  • תודה רבה!!

    העלתי לשרת App Service של פורטל אז'ור, (portal.azure.com)

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

    ואם כן הוא מעדכן בDB ושולח נוטיפיקישן לאפליקציה.

    זה הקוד:

    [Route("CheckinNow")]
    [HttpGet]        
    public IHttpActionResult CheckinNow()        
    { 
               var startTimeSpan = TimeSpan.Zero; 
               var periodTimeSpan = TimeSpan.FromMinutes(1);
               string now = "";            SendNotification sendNotification = new SendNotification(); 
               var timer = new System.Threading.Timer((e) =>            {                //MyMethod();
                List<UserHotel> userHotels = db.UserHotels.Where(u => u.checkinNow == false || u.checkinNow == null).ToList();
                foreach (var item in userHotels) 
                {                   
                   if (item.Checkin <= DateTime.Now)                    
                   {                       
                           item.checkinNow = true; 
                           now += item.UserHotelId;                        
                           sendNotification.listChecked.Add(item.UserHotelId);             
                           db.Entry(item).State = EntityState.Modified;
                           db.SaveChanges();                    
                     }               
                }               
                sendNotification.title = "CheckinNow";              
                sendNotification.body = "CheckinNow";                
                SendNotificationHotel(sendNotification);   
             }, null, startTimeSpan, periodTimeSpan);           
         return Ok(DateTime.Now.ToString() + now);      
      }

    יום רביעי 01 מאי 2019 07:31
  • היי,

    אפליקציית ASP.Net לא מתאימה כל כך לעבודה עם טיימר מכיוון שמדובר על אפליקציה שמבוססת על REST (הטריגר להפעלה הוא הלקוח שפונה אל האפליקציה).

    תבדקי אם את יכולה לעבוד עם  Azure function או Azure Webjob


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום רביעי 01 מאי 2019 13:54
    מנחה דיון
  • האפליקציה קוראת לשרת פעם ראשונה,

    כך שיש מי שמפעיל את הפונקציה,

    נראה לי שהבעיה היא שה time zone של האפליקציה והמחשב המקומי שונה מהtime zone של ה App Service..

    יום חמישי 02 מאי 2019 08:50
  • אני נתקלתי בבעיות אחרות כמו שהזכרתי מעל. אפיקציית asp.net ישנה (sleep) עד שמתקבלת קריאה אליה ולכן פעולות מתוזמנות לא עובדות טוב. כאשר יש שליטה על ה IIS אז אפשר לקבוע את האפליקציה תקבל פינג ותאר במצב ער אבל בענן אין לנו שליטה על זה. פעולות כאלה פשוט לא מתאימות לאפליקציות asp.net אלא יותר לשירותים (במכונה מקומית למשל נוכל לעבוד עם שרתים כמו wcf)

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


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום חמישי 02 מאי 2019 18:07
    מנחה דיון
  • אם אתה עובד ב- Asp.Net Core, אז אתה יכול להשתמש ב- IHostedService כדי לבנות BackgroundTask שיכול לרוץ על טיימר

    https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-3.1&tabs=visual-studio

    עם זאת, אם השרת שלך לא עושה שום דבר אחר חוץ מזה, ובמידה ואין עוד שיקולים, אז יהיה יותר פשוט וכנראה יותר זול להריץ Azure Function עם Timer.

    הכל תלוי בצרכים שלך.

    יום חמישי 11 יוני 2020 10:28