תזמון משימות אסינכרוניות מרובות תהליכים בדינג'ו עם סלרי

Django
|
תזמון משימות אסינכרוניות מרובות תהליכים בדינג'ו עם סלרי


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

1. התקן סלרי ו-Django Celery Beat

המסע מתחיל בהתקנת סלרי וג'נגו-סלרי-ביט. אלו הם רכיבים חיוניים לתזמון וביצוע משימות ב-Django. אתה יכול להתקין אותם באמצעות pip:

    pip install celery django-celery-beat
2. הגדר סלרי

לאחר התקנת סלרי, עליך להגדיר אותו כך שיעבוד עם יישום ה-Django שלך. התחל ביצירת קובץ בשם celery.py בספרייה הראשית של הפרויקט שלך. קובץ זה יאתחל את סלרי ויקשר אותו להגדרות של Django.

    from celery import Celery
    import os

    # Set the default Django settings module for the 'celery' program.
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project_name.settings')

    app = Celery('your_project_name')

    # Using a string here means the worker will not have to serialize
    # the configuration object to child processes.
    app.config_from_object('django.conf:settings', namespace='CELERY')

    # Load task modules from all registered Django apps.
    app.autodiscover_tasks()

כדי להבטיח שתצורה זו תיטען כאשר Django מתחיל, ייבא את אפליקציית סלרי שלך ב- your_project_name/__init__.py קוֹבֶץ:

    from .celery import app as celery_app

    __all__ = ('celery_app',)
3. עדכן את הגדרות Django

לאחר מכן, שלב את סלרי עם הגדרות ה-Django שלך על ידי עדכון ה- settings.py קוֹבֶץ. זה כולל ציון המתווך והקצה האחורי של התוצאה שלך, שיכולים להיות RabbitMQ או Redis.

    CELERY_BROKER_URL = 'redis://localhost:6379/0'  # or 'amqp://localhost//' for RabbitMQ
    CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
    CELERY_TIMEZONE = 'UTC'

    from celery.schedules import crontab

    CELERY_BEAT_SCHEDULE = {
        'task-name': {
            'task': 'myapp.tasks.task_function',
            'schedule': crontab(minute=0, hour=0),  # Executes daily at midnight
        },
    }
4. הגדר את המשימה שלך

עכשיו, הגיע הזמן להגדיר מה המשימות שלך צריכות להיות. צור א tasks.py קובץ באפליקציית Django שלך (למשל, myapp ) והוסף את פונקציית המשימה שלך.

    from celery import shared_task

    @shared_task
    def task_function():
        # Logic for your asynchronous, multithreaded task
        print("Task is executing")

כָּאן, @shared_task הוא מעצב שסופק על ידי סלרי המסמן את הפונקציה כמשימה שניתן להתקשר אליה.

5. הפעל סלרי וולר וביט

לבסוף, עליך להפעיל את ה-Celery worker and beat כדי להתחיל לעבד את המשימות ולתזמן אותן בהתאם לתצורה שלך.

    # Start Celery Worker
    celery -A your_project_name worker -l info

    # Start Celery Beat
    celery -A your_project_name beat -l info

פקודות אלו מפעילות את העובד לעיבוד משימות אסינכרוניות ואת תהליך הקצב לניהול משימות תקופתיות. ודא שמתווך ההודעות שלך כמו Redis או RabbitMQ פועל לפני ביצוע פקודות אלה.

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




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

האם המאמר הזה היה מועיל?
‏196 מתוך 196 מצאו זאת מועיל
avatar
John Tanner
מייסד

אני מפתח תוכנה מיומן מאוד עם למעלה מ-20 שנות ניסיון בפיתוח פול סטאק חוצה פלטפורמות. אני מתמחה בעיצוב וניהול ארכיטקטורות פרויקטים בקנה מידה גדול ובפישוט מערכות מורכבות. המומחיות שלי כוללת פיתוח ב-Python, Rust ו-Django. יש לי הבנה עמוקה בטכנולוגיות בלוקצ'יין, בינה מלאכותית, מערכות בעלות תחרות גבוהה, כריית נתונים מאפליקציות ואתרים, פיתוח API, אופטימיזציה של מסדי נתונים, קונטיינריזציה של פרויקטים ופריסתם בסביבות ייצור.

צור קשר John Tanner
קטגוריית בלוג: