"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > استخدم SQLite كوسيط للكرفس في Django

استخدم SQLite كوسيط للكرفس في Django

تم النشر بتاريخ 2024-08-18
تصفح:569

Use SQLite as a Celery broker in Django

قد يكون Redis و RabbitMQ الوسطاء المفضلين عند استخدام Celery، ولكن عندما تقوم بالتطوير محليًا، يمكن أن يشعروا بالمبالغة. تشير وثائق Celery 5.4 إلى أنه يمكنك استخدام SQLite كوسيط تجريبي للتنمية المحلية. ومع ذلك، عند الانتقال إلى صفحة الواجهات الخلفية والوسطاء الخاصة بشركة Celery، فإن الإشارات الوحيدة لـ SQL هي لـ SQLAlchemy backend. لحسن الحظ، تشير الصفحة إلى أن "هذا القسم ليس شاملاً للواجهات الخلفية والوسطاء."

سيوضح لك هذا المنشور كيفية تنفيذ وسيط SQLite (أو أي SQL!) لـ Celery في مشروع Django. لن يعلمك هذا المنشور كيفية استخدام الكرفس: راجع وثائق الكرفس الرسمية لمعرفة ذلك. قبل أن نبدأ

لأغراض هذا المنشور، سنفترض أن لديك بالفعل مشروع Django الحالي مع تثبيت Celery باستخدام الخطوات الواردة في دليل "الخطوات الأولى مع Django" الرسمي الخاص بـ Celery. الواجهة الخلفية لـ Celery ليست

مطلوبة

، ولكن قد ترغب في اتباع خطوات الدليل لتثبيت وتكوين نتائج Django-celery. إذا لم تكن واضحًا بشأن الفرق بين الواجهات الخلفية والوسطاء، فراجع مقالتي "فهم المهام والوسطاء والعاملين والواجهات الخلفية في الكرفس." ستكون جميع الروابط إلى وثائق المصدر مخصصة للإصدارات الحالية من Django وCelery وSQLAlchemy في وقت النشر (يوليو 2024)، باستثناء ما يُنص على خلاف ذلك صراحةً. إذا كنت تقرأ هذا في المستقبل البعيد، فربما تغيرت الأمور.

إعداد وسيط SQL

بينما يدير Celery المهام وقوائم الانتظار، فإنه يفوض إلى مكتبة أخرى تسمى Kombu لتبادل الرسائل مع الوسيط. يعتبر RabbitMQ وRedis من أكثر وسائل النقل (الوسطاء) اكتمالًا للميزات في Kombu، ولكنه يحتوي أيضًا على وسائل نقل افتراضية لـ Amazon SQS وZooKeeper وMongoDB.

يوجد في زوايا بعيدة من وثائق 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 (قابلة للتبديل)

    علامة
  1. سلسلة اتصال SQLAlchemy
  2. تختلف سلاسل الاتصال لـ SQLite على نظامي التشغيل Mac/Unix وWindows:

# ماك أو إس/يونكس CELERY_BROKER_URL = "sqla sqlite:////your/project/path/broker.sqlite3" #ويندوز CELERY_BROKER_URL = "sqla sqlite:///C:your\\project\\path\\broker.sqlite3"

يمكنك أيضًا استخدام Postgres كوسيط Celery، أو يمكنك بسهولة استخدام MySQL كوسيط Celery:
# 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 أو PostgreSQL، وقد تؤثر المكتبة التي تقوم بتثبيتها على سلسلة اتصال SQLAlchemy. تحقق من مستندات عنوان URL لقاعدة بيانات SQLAlchemy لمزيد من التفاصيل.
# 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.

ومع ذلك، قد يكون ذلك جيدًا للتنمية المحلية، أو حتى المشاريع الجانبية الصغيرة. لكنني لن أشعر بالصدمة إذا اختفت القدرة على استخدام SQLAlchemy كوسيط في المستقبل.

الخطوات التالية

مع تشغيل Celery محليًا، يمكنك البدء في العمل على تطبيقك الذي يعمل بقائمة الانتظار. ومع ذلك، قد تجد أن افتقارها إلى إعادة التحميل التلقائي يمثل نقطة احتكاك. إذا كنت تريد إعداد إعادة تحميل Celery تلقائيًا في تطبيق Django الخاص بك، فاقرأ مقالتي "إعادة تحميل عمال Celery تلقائيًا باستخدام أمر Django المخصص."

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/tylerlwsmith/use-sqlite-as-a-celery-broker-in-django-1jne?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] للحذف هو - هي
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3