נוגש הוא תור פשוט חילק מיועד לטיפול במספר גדול של משימות חד פעמיות.
אנחנו בנינו את זה בDisqus לטפל תכוף, אבל משימות נדירות כמו "להעביר נתונים זה לסכמה חדשה".
מדוע?
אתם עשויים לשאול, "למה לא להשתמש סלרי?". ובכן, התשובה היא פשוט שתורים רגילים דורש (לא ממש, אבל זה יהיה כואב ללא) למאגר את כל המשימות למיקום מרכזי. זה הופך לבעיה כאשר יש לך כמות גדולה של משימות, במיוחד כאשר הם מכילים כמות גדולה של נתונים.
תארו לעצמכם שיש לך 1 מיליארדים משימות, כל אחד במשקל של 5k. Thats, לא דחוס, בשעה 4 טרה-בתים של אחסון מינימאלי הנדרשות רק כדי לשמור שמסביב, וזוכה לך מעט מאוד.
נוגש מאידך נועד להימשך איטרטור ניתן לחידוש, ולמשוך רק במספר מרבי של עבודות בכל פעם (באמצעות Python התור של סטנדרטי). הדבר מבטיח דפוס עקבי זיכרון שניתן להרחבה באופן ליניארי.
שימוש
צור איטרטור, והתקשרות:
שקע יבוא
# אנחנו חייבים להבטיח פסק זמן ברירת מחדל ** לא מוגדר ** או חרא אקראי יפגע המאוורר.
socket.setdefaulttimeout (ללא)
# נוגש / example.py
get_jobs def (אחרון = 0):
& Nbsp; # אחרון יישלח אם המדינה חודשה
& Nbsp; # מריצה קודמת
& Nbsp; לi בxrange (אחרון, 100000000):
& Nbsp; # עבודות הניבו חייבת להיות serializeable עם מלפפון חמוץ
& Nbsp; i התשואה
handle_job def (i):
& Nbsp; # ** זה חייב להיות ** idempotent, כחידוש התהליך רשאי לבצע עבודה
& Nbsp; # שכבר לרוץ
& Nbsp; הדפסה "r% Got!" i%
להשריץ אב:
& Nbsp; taskmaster.example tm-master
להשריץ עבדים:
& Nbsp; taskmaster.example tm-עבדים
או שרצים 8 עבדים (כל אחד המכיל threadpool):
& Nbsp; taskmaster.example tm להשריץ 8
לא אוהב את הפונקציה הקסומה לגלות לאב / עבד? ציין מטרות משלך:
& Nbsp; taskmaster.example tm-master: taskmaster.example tm-עבדים $ get_jobs: handle_job
הערה: כל הטיעונים הם אופציונליים, ויהיה ברירת מחדל localhost ללא מפתח auth
דרישות :.
- Python
תגובות לא נמצא