מתזמן לגרידת אתרים: מ-Cron ל-Celery Beat עם התראות וניטור

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

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
מתזמן לגרידת אתרים: מ-Cron ל-Celery Beat עם התראות וניטור
פשוט
מ- 1 יום עד 3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113
  • פיתוח אתר עבור SBH Partners
    פיתוח אתר עבור SBH Partners
    1201
  • פיתוח אתר עבור Red Pear
    פיתוח אתר עבור Red Pear
    619

מתזמן לגרידת אתרים: מ-Cron ל-Celery Beat עם התראות וניטור

תארו לעצמכם שבילו שעות בהפעלה ידנית של פארסרים, ואחרי קריסה, שחזור נתונים מלוגים. המתחרה שלכם כבר משתמש בתזמון אוטומטי ולוכד נתונים טריים יותר. מתזמן גרידה פותר את זה: cron למשימות פשוטות, Celery Beat לפרויקטים ב-Python, Agenda ל-Node.js. אנחנו מתכננים מתזמנים עם התראות והיסטוריית ביצוע מלאה. בפועל, אפילו 5–10 פארסרים ללא מערכת ניהול מרכזית מובילים לכאוס. לכן מתזמן מרכזי הוא לא מותרות אלא הכרח לאיסוף נתונים סדיר.

בעיות שאנחנו פותרים

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

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

אפשרויות יישום

Cron (Linux crontab) — הפשוט ביותר למספר קטן של משימות:

# Запуск парсера каждые 4 часа
0 */4 * * * /usr/bin/python3 /opt/scrapers/catalog_spider.py >> /var/log/scraper.log 2>&1

חיסרון: אין היסטוריית ריצות, אין ממשק משתמש, קשה לנהל עשרות משימות. Celery Beat — הבחירה המועדפת לפרויקטים ב-Python:

# celery_config.py
from celery.schedules import crontab

CELERYBEAT_SCHEDULE = {
    'parse-catalog': {
        'task': 'scrapers.tasks.run_catalog_parser',
        'schedule': crontab(hour='*/4'),
        'options': {'queue': 'scraping'}
    },
    'parse-prices': {
        'task': 'scrapers.tasks.run_price_parser',
        'schedule': crontab(minute=0, hour=6),
    },
}

מעקב אחר היסטוריה דרך # Запуск парсера каждые 4 часа 0 */4 * * * /usr/bin/python3 /opt/scrapers/catalog_spider.py >> /var/log/scraper.log 2>&1 או Flower לניטור. Node.js: node-cron / Agenda

const Agenda = require('agenda');
const agenda = new Agenda({ db: { address: MONGODB_URI } });

agenda.define('parse catalog', async job => {
  const { sourceUrl } = job.attrs.data;
  await runCatalogScraper(sourceUrl);
});

await agenda.every('4 hours', 'parse catalog', { sourceUrl: 'https://...' });

Agenda מאחסן משימות ב-MongoDB, תומך בניסיונות חוזרים במקרה של כשל, עדיפויות ונעילות.

כלי שפה ניטור ממשק משתמש ניסיון חוזר אחסון היסטוריה
Cron כל שפה לוגים לא ידני אין
Celery Beat Python Flower כן אוטומטי Redis/DB
Agenda Node.js לא כן אוטומטי MongoDB
K8s CronJob כל שפה דרך K8s כן דרך מדיניות לוגים של K8s

ניטור הפארסרים נעשה דרך Flower או Grafana.

הגדרת התראות על תקלות

כל מתזמן מורחב עם מודול התראות. כאשר חריגה מסף השגיאות (3 ריצות כושלות רצופות), נשלחת הודעה ל-Telegram או Slack. אנחנו משתמשים בהשהיה אקספוננציאלית בין ניסיונות חוזרים: דקה 1 → דקה 2 → דקה 4 → 60 דקות כדי למנוע עומס על המערכת במהלך תקלות זמניות.

למה Cron יחיד לא מספיק לעשרות משימות

Cron לא יודע על מצב הביצוע: אם משימה אחת נתקעת, הבאה עשויה להתחיל במקביל ולגרום לתחרות על משאבים. Cron לא יכול להתריע על שגיאות ולא מאחסן היסטוריה. עבור 10+ משימות, אנחנו ממליצים על Celery Beat או Kubernetes CronJob — הם מספקים שליטה, נראות וסובלנות לתקלות.

דרישות המתזמן

  • ביצוע מתוזמן (ביטוי cron או מרווח)
  • ביצוע מקבילי עם מגבלות מקביליות
  • ניסיון חוזר אוטומטי במקרה של כשל (השהיה אקספוננציאלית)
  • התראות דרך Telegram/Slack כאשר חריגה מסף השגיאות
  • היסטוריה: זמן ריצה, מספר רשומות, שגיאות — לוג גרידה מלא

השוואה: Celery Beat מול Cron באמינות

Celery Beat עם ניטור משיג אמינות גבוהה משמעותית מאשר cron גולמי, מכיוון שהוא כולל ניסיונות חוזרים אוטומטיים ואינטגרציה עם תור. Cron ללא ניטור נכשל לעיתים קרובות בשקט. היישומים שלנו משיגים בעקביות יותר מ-99.9% שיעורי השלמת משימות.

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

  1. רשמו את כל הפארסרים ואת לוחות הזמנים שלהם (ביטויי cron).
  2. בחרו את הכלי: cron למשימה 1–2, Celery Beat ל-Python, Agenda ל-Node.js, Kubernetes CronJob לסביבות קונטיינרים.
  3. הקימו תור הודעות (Redis/RabbitMQ) להעברת משימות לעובדים.
  4. יישמו את מודול ההתראות עם ספי שגיאות והשהיה אקספוננציאלית.
  5. פרסו ניטור: Flower, Grafana, או לוגים של Kubernetes.
  6. בדקו תרחישי כשל: נפילת עובד, עומס על התור, נתוני קלט פגומים.

פרמטרי תצורה אופייניים

פרמטר ערך ברירת מחדל המלצה
מרווח בדיקת לוח זמנים דקה אחת 1–5 דקות
מקסימום ניסיונות חוזרים 3 3–5
השהיה בין ניסיונות אקספוננציאלית: 1,2,4,... עד 60 דקות
סף שגיאות להתראה 3 רצופות 3–5
ערוץ התראות Telegram Telegram / Slack / Email

מה כלול בעבודה

כאשר אתם מזמינים מתזמן מותאם אישית, אנחנו מספקים:

  • עיצוב ארכיטקטורה: בחירת כלי לפי עומס ושפה (Celery/Agenda/K8s CronJob)
  • הגדרת תור ועובדים (RabbitMQ/Redis)
  • אינטגרציית התראות (Telegram/Slack/email)
  • לוח מחוונים לניטור (Flower / Grafana)
  • תיעוד להוספת משימות חדשות
  • אחריות על קוד ל-12 חודשים

זמן יישום: בין 2 ל-5 ימי עבודה תלוי במורכבות. הערכה מדויקת לאחר ניתוח הפרויקט. צרו קשר כדי לדון במשימה שלכם — נעזור לבחור את הפתרון האופטימלי וליישם מתזמן שיפעל באמינות במשך שנים. התמחור הוא אישי.

דוגמה לתצורת Celery Beat
from celery.schedules import crontab

beat_schedule = {
    'parse-catalog': {
        'task': 'scrapers.tasks.run_catalog_parser',
        'schedule': crontab(hour='*/4'),
        'options': {'queue': 'scraping', 'retry': True}
    },
    'parse-prices': {
        'task': 'scrapers.tasks.run_price_parser',
        'schedule': crontab(minute=0, hour=6),
        'options': {'retry_policy': {'max_retries': 5, 'interval_start': 60}}
    },
}