قد يكون Redis و RabbitMQ الوسطاء المفضلين عند استخدام Celery، ولكن عندما تقوم بالتطوير محليًا، يمكن أن يشعروا بالمبالغة. تشير وثائق Celery 5.4 إلى أنه يمكنك استخدام SQLite كوسيط تجريبي للتنمية المحلية. ومع ذلك، عند الانتقال إلى صفحة الواجهات الخلفية والوسطاء الخاصة بشركة Celery، فإن الإشارات الوحيدة لـ SQL هي لـ SQLAlchemy backend. لحسن الحظ، تشير الصفحة إلى أن "هذا القسم ليس شاملاً للواجهات الخلفية والوسطاء."
سيوضح لك هذا المنشور كيفية تنفيذ وسيط SQLite (أو أي SQL!) لـ Celery في مشروع Django. لن يعلمك هذا المنشور كيفية استخدام الكرفس: راجع وثائق الكرفس الرسمية لمعرفة ذلك. قبل أن نبدأ
، ولكن قد ترغب في اتباع خطوات الدليل لتثبيت وتكوين نتائج Django-celery. إذا لم تكن واضحًا بشأن الفرق بين الواجهات الخلفية والوسطاء، فراجع مقالتي "فهم المهام والوسطاء والعاملين والواجهات الخلفية في الكرفس." ستكون جميع الروابط إلى وثائق المصدر مخصصة للإصدارات الحالية من Django وCelery وSQLAlchemy في وقت النشر (يوليو 2024)، باستثناء ما يُنص على خلاف ذلك صراحةً. إذا كنت تقرأ هذا في المستقبل البعيد، فربما تغيرت الأمور.
إعداد وسيط SQL
يوجد في زوايا بعيدة من وثائق Kombu نموذج نقل SQLAlchemy الذي يدعم PostgreSQL وMySQL وSQLite. ذات مرة، تم توثيق وسيط SQLAlchemy على موقع Celery الإلكتروني، ولكن تمت إزالته منذ ذلك الحين من المستندات في الإصدارات الأحدث من المكتبة. ومع ذلك، فإنه لا يزال يعمل بشكل جيد بما فيه الكفاية للتنمية المحلية.
لاستخدام قاعدة بيانات تكميلية كوسيط Celery في تطبيق Django، قم أولاً بتثبيت SQLAlchemy:
تثبيت SQLAlchemy
pip install SQLAlchemy
# BASE_DIR هو الدليل الرئيسي لمشروعك.
CELERY_BROKER_URL = f"sqlalchemy sqlite:////{BASE_DIR}/broker.sqlite3"
# BASE_DIR is the directory of your project's main directory. CELERY_BROKER_URL = f"sqlalchemy sqlite:////{BASE_DIR}/broker.sqlite3"من 3 أجزاء:
سلسلة sqlalchemy أو sqla (قابلة للتبديل)
# ماك أو إس/يونكس
CELERY_BROKER_URL = "sqla sqlite:////your/project/path/broker.sqlite3"
#ويندوز
CELERY_BROKER_URL = "sqla sqlite:///C:your\\project\\path\\broker.sqlite3"
# MacOS/Unix CELERY_BROKER_URL = "sqla sqlite:////your/project/path/broker.sqlite3" # Windows CELERY_BROKER_URL = "sqla sqlite:///C:your\\project\\path\\broker.sqlite3"
# ماي إس كيو إل
CELERY_BROKER_URL = "sqlalchemy mysql://scott:tiger@localhost/foo"
# بوستجري إس كيو إل
CELERY_BROKER_URL = "sqla postgresql://scott:tiger@localhost/mydatabase"
# اتصال PosgreSQL باستخدام pg8000
CELERY_BROKER_URL = "sqla postgresql pg8000://scott:tiger@localhost/mydatabase"
# MySQL CELERY_BROKER_URL = "sqlalchemy mysql://scott:tiger@localhost/foo" # PostgreSQL CELERY_BROKER_URL = "sqla postgresql://scott:tiger@localhost/mydatabase" # PosgreSQL connecting using pg8000 CELERY_BROKER_URL = "sqla postgresql pg8000://scott:tiger@localhost/mydatabase"بغض النظر عن قاعدة البيانات التي تختارها، قد ترغب في التفكير في تخزين عنوان URL للوسيط في متغير بيئة لتسهيل تغييره في بيئات مختلفة:
CELERY_BROKER_URL = os.getenv("CELERY_BROKER_URL")
# MySQL CELERY_BROKER_URL = "sqlalchemy mysql://scott:tiger@localhost/foo" # PostgreSQL CELERY_BROKER_URL = "sqla postgresql://scott:tiger@localhost/mydatabase" # PosgreSQL connecting using pg8000 CELERY_BROKER_URL = "sqla postgresql pg8000://scott:tiger@localhost/mydatabase"من المحتمل أن يعتبر نقل SQLAlchemy تجريبيًا، وبالتالي لن يكون مخصصًا للاستخدام في الإنتاج. قد يحدث فقدان للبيانات، أو قد يتم تسليم الرسائل عدة مرات. فكر في التبديل إلى وسيط أكثر قوة مدرج في صفحة الوسطاء والواجهات الخلفية لشركة Celery.
الخطوات التالية
مع تشغيل Celery محليًا، يمكنك البدء في العمل على تطبيقك الذي يعمل بقائمة الانتظار. ومع ذلك، قد تجد أن افتقارها إلى إعادة التحميل التلقائي يمثل نقطة احتكاك. إذا كنت تريد إعداد إعادة تحميل Celery تلقائيًا في تطبيق Django الخاص بك، فاقرأ مقالتي "إعادة تحميل عمال Celery تلقائيًا باستخدام أمر Django المخصص."
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3