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

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

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

הפעלת פונקציה אסינכרונית ללא await

מתוזמן נעוץ נעול הועבר תכנות
15 פוסטים 3 כותבים 520 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    השיב לרפאל ב נערך לאחרונה על ידי
    #6

    @רפאל לא אכפת לי "להמתין", רק תרשה לי לשחרר את הבקשה עם תשובה מוגמרת ("OK אנחנו תיכף עושים זאת").

    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

    בכל נושא אפשר ליצור קשר dovid@tchumim.com

    רפאלר תגובה 1 תגובה אחרונה
    1
    • רפאלר מנותק
      רפאלר מנותק
      רפאל
      השיב לdovid ב נערך לאחרונה על ידי רפאל
      #7

      @dovid אמר בהפעלת פונקציה אסינכרונית ללא await:

      רק תרשה לי לשחרר את הבקשה

      שחרור הבקשה מתבצע (בלי לקחת בחשבון Filters וMiddlewares) בעת הרצת הreturn (גם בעת כתיבה ישירה לBody) לאחר מכן הController ושאר הServices שרשומים כScope יושמדו (תיאורטית ניתן להזריק את IServiceScopeFactory (שהוא Singleton) ולבקש את הServices הדרושים גם אחרי שהבקשה הושלמה, אם כי הבעיה הגדולה של טיפול בשגיאות עדיין קיימת)

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

        @רפאל אמר בהפעלת פונקציה אסינכרונית ללא await:

        הדרך המומלצת להריץ משימות רקע בASP.NET בפרט ובNET. בכלל, היא שימוש בHosted Service

        מכיר את זה, יש גם כלים לניהול ג'ובים וכדומה. זה לא התרחיש.

        @dovid אמר בהפעלת פונקציה אסינכרונית ללא await:

        @רפאל לא אכפת לי "להמתין", רק תרשה לי לשחרר את הבקשה עם תשובה מוגמרת ("OK אנחנו תיכף עושים זאת").

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

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

        רפאלר תגובה 1 תגובה אחרונה
        0
        • רפאלר מנותק
          רפאלר מנותק
          רפאל
          השיב לארכיטקט ב נערך לאחרונה על ידי רפאל
          #9

          @ארכיטקט לא ברור לי מה מכונה אצלך "התרחיש".
          השימוש בHosted Service הוא הפתרון המומלץ והיחיד שקיים היום עבור פעולות אסינכרוניות קצרות וארוכות כאחד.

          א תגובה 1 תגובה אחרונה
          0
          • א מנותק
            א מנותק
            ארכיטקט
            השיב לרפאל ב נערך לאחרונה על ידי ארכיטקט
            #10

            @רפאל אמר בהפעלת פונקציה אסינכרונית ללא await:

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

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

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

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

            רפאלר תגובה 1 תגובה אחרונה
            0
            • רפאלר מנותק
              רפאלר מנותק
              רפאל
              השיב לארכיטקט ב נערך לאחרונה על ידי רפאל
              #11

              @ארכיטקט אמר בהפעלת פונקציה אסינכרונית ללא await:

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

              פספסתי. אני חושד שיש לנו חוסר הבנה.

              אופן הוספת המשימות לתור זהה ואינו תלוי כלל בטיב המשימה:

              [HttpPost]
              public Guid Post(Model model)
              {
                 return _queue.Enqueue((ct, sp) => sp.GetService<ISomeService>().DoAsync(model, ct));
              }
              
              א תגובה 1 תגובה אחרונה
              2
              • א מנותק
                א מנותק
                ארכיטקט
                השיב לרפאל ב נערך לאחרונה על ידי
                #12

                @רפאל חסר לי כאן משהו בסיסי
                האם מדובר בפרוסס נפרד לחלוטין ברמת ה windows? זה חשוב מאוד.

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

                רפאלר תגובה 1 תגובה אחרונה
                0
                • רפאלר מנותק
                  רפאלר מנותק
                  רפאל
                  השיב לארכיטקט ב נערך לאחרונה על ידי רפאל
                  #13

                  @ארכיטקט ממש לא, גם לא Thread בפני עצמו.
                  HostedService זה Service מסוג סינגלטון רגיל אך בעל Lifetime משלו (נוצר בתחילת הריצה של האפליקציה [בניגוד לServices רגילים הנוצרים לפי הצורך], ומושמד בסיום הריצה), אין בו שום קסם אולם הוא מהווה פלטפורמה נחוצה להרצת משימות ארוכות או מתוזמנות.

                  א תגובה 1 תגובה אחרונה
                  2
                  • א מנותק
                    א מנותק
                    ארכיטקט
                    השיב לרפאל ב נערך לאחרונה על ידי
                    #14

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

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

                    א תגובה 1 תגובה אחרונה
                    0
                    • א מנותק
                      א מנותק
                      ארכיטקט
                      השיב לארכיטקט ב נערך לאחרונה על ידי
                      #15

                      @ארכיטקט אמר בהפעלת פונקציה אסינכרונית ללא await:

                      אז זה בעצם אומר גם בין היתר שהאפליקציה לא הולכת לישון אף פעם?

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

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

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

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

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

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