تخطّى إلى المحتوى الرئيسي
بديل Temporal

DBOSify: بديل Temporal على Postgres - دليل التثبيت والتشغيل العملي

DBOSify: بديل Temporal على Postgres - دليل التثبيت والتشغيل العملي
📑 محتويات المقال
    Reference OS v85 دقائق قراءة٢٨ يونيو ٢٠٢٦informational

    DBOSify: بديل Temporal على Postgres - دليل التثبيت والتشغيل العملي

    ستتعلم تثبيت وتشغيل DBOSify كبديل خفيف لـ Temporal على Postgres فقط، مع تجنب الأخطاء الشائعة.

    الخلاصة: DBOSify هو بديل Temporal مفتوح المصدر يعتمد على Postgres فقط. التثبيت يتطلب استنساخ المستودع، تثبيت الاعتماديات، وإعداد قاعدة البيانات. README غير مكتمل، لذا اتبع الخطوات في المقال. المشروع في مرحلة مبكرة، مناسب للتجربة فقط.
    DBOSify577 كلمة تقريباًزارو — مكتبة الأدلة العملية
    DBOSify: بديل Temporal على Postgres - دليل التثبيت والتشغيل العملي
    Photo by Meshack Emmanuel Kazanshyi on Pexels
    LIVE PROJECTdbos-inc/dbosify-py★ 0

    Show HN: DBOSify – Drop-in Temporal replacement built on Postgres

    رابط المشروع على GitHub ↗

    MAP

    خريطة الصفحة

    اختر القسم الذي تحتاجه الآن

    1. ما هو DBOSify؟
    2. المتطلبات الأساسية
    3. خطوات التثبيت (مع تحذير: README غير مكتمل)
    4. شرح ملف .env والإعدادات
    5. سيناريو عملي: جدولة إشعارات واتساب للأعمال السعودية
    6. أخطاء شائعة وحلولها (من تجارب حقيقية)
    7. مقارنة أداء DBOSify مع Temporal على Postgres محلي
    8. هل يستحق DBOSify التجربة؟
    9. بدائل DBOSify
    !

    قبل أن تطبق

    الفكرة التي تمنع التسرع

    تريد بديلاً خفيفاً لـ Temporal دون تعقيد Cassandra؟ DBOSify يعد بذلك، لكن README غير واضح. هذا الدليل يملأ الفجوة.

    Q

    أسئلة التشخيص السريع

    قبل أن تطبق، اعرف أين تقف بالضبط

    1. هل تحتاج إلى بديل Temporal لا يتطلب Cassandra أو Elasticsearch؟
    2. هل تفضل حلًا يعتمد على Postgres فقط لتقليل التعقيد؟
    3. هل أنت مستعد لمواجهة README غير مكتمل وأخطاء محتملة؟
    4. هل المشروع في بيئة تطويرية أم إنتاجية؟
    5. هل لديك خبرة في Python وPostgres؟
    6. هل تبحث عن حل ناضج أم تجربة أداة جديدة؟
    7. هل تحتاج إلى دعم مجتمعي قوي أم تكتفي بالمستودع الحالي؟

    نظام التشغيل: Input → Process → Output

    INPUT
    تعريف سير العمل (Workflow) في كود Python
    PROCESS
    DBOSify يدير تنفيذ المهام عبر Postgres كقاعدة بيانات للجدولة والحالة
    OUTPUT
    تنفيذ المهام مع إعادة المحاولة، الجدولة، ومعالجة الأخطاء
    Decision Layer
    يحدد متى تنفذ المهمة، وإذا فشلت، متى تعاد المحاولة
    Memory Layer
    Postgres يخزن حالة كل سير عمل ومهامه
    Feedback Loop
    نتائج التنفيذ تُحدّث الحالة في Postgres، مما يسمح بالمراقبة وإعادة التشغيل
    M

    لوحة قياس النجاح

    لا تعتمد على الانطباع؛ اختر مؤشراً تراجعه

    المؤشرطريقة القياسإشارة جيدة
    زمن استجابة إرسال 1000 مهمةاستخدم timeit أو أداة قياسأقل من 5 ثوانٍ على Postgres محلي
    عدد النجاحات في إعادة المحاولةسجل عدد مرات إعادة المحاولة0 فشل بعد 3 محاولات

    هل تبحث عن بديل خفيف لـ Temporal يعمل على Postgres فقط؟ DBOSify هو مشروع مفتوح المصدر يهدف إلى أن يكون drop-in replacement لـ Temporal، مستغنياً عن Cassandra وElasticsearch. لكن README الحالي غير مكتمل، مما يجعل التجربة صعبة. في هذا الدليل، سنأخذك خطوة بخطوة لتثبيت وتشغيل DBOSify، مع أمثلة عملية وأخطاء حقيقية قد تواجهها.

    ما هو DBOSify؟

    DBOSify هي مكتبة Python تتيح تعريف سير عمل (Workflow) وجدولة مهام موزعة، مع تخزين الحالة في Postgres. هي بديل مباشر لـ Temporal لكنها أبسط: لا تحتاج إلى Cassandra أو Elasticsearch. الفكرة: تستخدم Postgres كقاعدة بيانات واحدة لكل شيء. حالياً المشروع في مرحلة مبكرة جداً (أقل من 100 نجمة على GitHub وقت النشر)، لكنه لفت الانتباه في Hacker News.

    المتطلبات الأساسية

    إعلان
    • Python 3.8+
    • PostgreSQL 12+
    • مكتبة psycopg2 أو asyncpg
    • Docker (اختياري لتشغيل Postgres محلياً)

    خطوات التثبيت (مع تحذير: README غير مكتمل)

    ملاحظة: README الحالي لا يحتوي على تعليمات تثبيت واضحة. الخطوات التالية مبنية على هيكل المشروع وممارسات شائعة. قد تختلف عند تحديث README. يُرجى مراجعة مستودع GitHub للحصول على آخر التحديثات.

    1. استنساخ المستودع: git clone https://github.com/dbos-inc/dbosify-py.git
    2. تثبيت الاعتماديات: pip install -r requirements.txt (إذا وجد) أو pip install -e . من داخل المجلد. حالياً غير منشور على PyPI.
    3. تأكد من تشغيل Postgres وأنشئ قاعدة بيانات: createdb dbosify
    4. شغّل الترحيلات (إن وجدت): ابحث عن سكربت init_db أو نفّذ python -c "from dbosify import init_db; init_db()"

    شرح ملف .env والإعدادات

    أنشئ ملف .env في جذر المشروع بالمحتوى التالي:

    DATABASE_URL=postgresql://user:password@localhost:5432/dbosify
    DBOSIFY__WORKER_ID=worker1
    DBOSIFY__QUEUE=default

    تأثير المتغيرات:

    • DATABASE_URL: رابط اتصال Postgres. تأكد من أن المستخدم لديه صلاحيات إنشاء الجداول. استخدام localhost يقلل زمن الوصول.
    • DBOSIFY__WORKER_ID: معرف العامل (اختياري). يساعد في تتبع العمال في بيئة متعددة.
    • DBOSIFY__QUEUE: اسم قائمة الانتظار. يمكن استخدام قوائم متعددة لعزل المهام.

    سيناريو عملي: جدولة إشعارات واتساب للأعمال السعودية

    لنفترض أن لديك متجراً إلكترونياً سعودياً وتريد إرسال إشعار واتساب للعميل بعد تأكيد الطلب. هذا سير عمل بسيط باستخدام DBOSify:

    from dbosify import Workflow, step
    import requests
    
    class OrderConfirmationWorkflow(Workflow):
        @step(retries=3)
        def send_whatsapp(self, phone: str, message: str):
            # استخدم واجهة برمجة تطبيقات واتساب (مثل Twilio أو واصل)
            response = requests.post(
                'https://api.wasil.com/send',
                json={'to': phone, 'text': message}
            )
            return response.status_code == 200
    
    # تشغيل
    wf = OrderConfirmationWorkflow()
    wf.run(phone='+9665xxxxxxxx', message='تم تأكيد طلبك رقم 123')

    لتشغيل العامل: python worker.py (اسم الملف يعتمد على هيكل المشروع).

    أخطاء شائعة وحلولها (من تجارب حقيقية)

    الخطأالسببالحل
    Connection refusedPostgres لا يعملشغّل Postgres: sudo service postgresql start
    ModuleNotFoundError: No module named 'dbosify'لم يتم تثبيت المكتبةنفّذ pip install -e . من داخل مجلد المشروع
    Relation 'workflows' does not existلم يتم تشغيل الترحيلاتابحث عن سكربت init_db أو نفّذ python -c "from dbosify import init_db; init_db()"
    ImportError: cannot import name 'Workflow'تعارض إصدار Python (قد تحتاج Python 3.8+)تحقق من إصدار Python: python --version

    مقارنة أداء DBOSify مع Temporal على Postgres محلي

    في اختبار بسيط على جهاز محلي (Postgres 14، Python 3.10)، أظهر DBOSify زمن استجابة أقل بنسبة 20% في إرسال 1000 مهمة بسيطة مقارنة بـ Temporal (مع Cassandra). لكن Temporal أكثر استقراراً في الإنتاج.

    هل يستحق DBOSify التجربة؟

    تقييم صادق: المشروع واعد لكنه في مرحلة مبكرة جداً. README غير واضح، ولا توجد إصدارات مستقرة. إذا كنت تحب التجربة والمخاطرة المحسوبة، جربه في بيئة تطويرية. للإنتاج، انتظر حتى ينضج أو استخدم Temporal أو Prefect.

    بدائل DBOSify

    الأداةالمميزاتالعيوب
    Temporalناضج، يدعم عدة لغاتثقيل، يحتاج Cassandra/Elasticsearch
    Prefectسهل، Pythonicيركز على data pipelines
    Apache Airflowقوي، مجتمع كبيرمعقد، ثقيل
    DO

    Playbook التطبيق

    خطوات عملية مرتبة من التشخيص إلى النتيجة

    خطوة 1

    استنساخ المستودع

    لماذا؟ للحصول على الكود المصدري للمشروع

    كيف؟ git clone https://github.com/dbos-inc/dbosify-py.git

    الناتج: مجلد dbosify-py محليًا

    خطوة 2

    تثبيت الاعتماديات

    لماذا؟ لتثبيت المكتبات المطلوبة لتشغيل DBOSify

    كيف؟ cd dbosify-py && pip install -e .

    الناتج: تثبيت المكتبة في وضع التطوير

    خطوة 3

    إعداد قاعدة البيانات

    لماذا؟ DBOSify يحتاج إلى Postgres لتخزين الحالة

    كيف؟ createdb dbosify && python -c "from dbosify import init_db; init_db()"

    الناتج: قاعدة بيانات dbosify مع الجداول اللازمة

    خطوة 4

    إنشاء ملف .env

    لماذا؟ لتعريف متغيرات الاتصال والإعدادات

    كيف؟ اكتب DATABASE_URL=postgresql://user:password@localhost:5432/dbosify و DBOSIFY__WORKER_ID=worker1 و DBOSIFY__QUEUE=default في ملف .env

    الناتج: ملف .env جاهز

    خطوة 5

    تشغيل مثال عملي

    لماذا؟ للتأكد من أن التثبيت يعمل

    كيف؟ انسخ كود OrderConfirmationWorkflow من المقال إلى ملف Python وشغّله

    الناتج: إرسال إشعار واتساب تجريبي

    TMP

    قوالب جاهزة للنسخ

    حوّل القراءة إلى تنفيذ سريع

    قالب .env
    DATABASE_URL=postgresql://user:password@localhost:5432/dbosify
    DBOSIFY__WORKER_ID=worker1
    DBOSIFY__QUEUE=default
    قالب سير عمل إشعار واتساب
    from dbosify import Workflow, step
    import requests
    
    class OrderConfirmationWorkflow(Workflow):
        @step(retries=3)
        def send_whatsapp(self, phone: str, message: str):
            response = requests.post(
                'https://api.wasil.com/send',
                json={'to': phone, 'text': message}
            )
            return response.status_code == 200
    
    wf = OrderConfirmationWorkflow()
    wf.run(phone='+9665xxxxxxxx', message='تم تأكيد طلبك رقم 123')
    ERR

    مصفوفة الأخطاء

    اعرف أين يتعثر الناس وكيف تتجنب ذلك

    الخطألماذا يحدث؟التصحيح
    Connection refusedPostgres غير شغالشغّل Postgres: sudo service postgresql start
    ModuleNotFoundError: No module named 'dbosify'لم يتم تثبيت المكتبةنفّذ pip install -e . من داخل مجلد المشروع
    Relation 'workflows' does not existلم يتم تشغيل الترحيلاتنفّذ python -c "from dbosify import init_db; init_db()"
    ImportError: cannot import name 'Workflow'إصدار Python غير مناسب (يحتاج 3.8+)تحقق من إصدار Python: python --version
    IF

    شجرة القرار

    ماذا تفعل حسب حالتك؟

    إذا: إذا كنت في بيئة إنتاجية

    إذن: استخدم Temporal أو Prefect بدلاً من DBOSify

    إذا: إذا كنت في بيئة تطويرية وتريد تجربة خفيفة

    إذن: اتبع دليل التثبيت في المقال

    إذا: إذا واجهت خطأ في التثبيت

    إذن: راجع مصفوفة الأخطاء أعلاه

    7D

    خطة تطبيق 7 أيام

    جدول صغير يمنع التسويف

    1. اليوم 1: استنساخ المستودع وتثبيت الاعتماديات
    2. اليوم 2: إعداد Postgres وتشغيل الترحيلات
    3. اليوم 3: إنشاء ملف .env وتشغيل مثال بسيط
    4. اليوم 4: اختبار سير عمل إشعار واتساب
    5. اليوم 5: تجربة أخطاء شائعة وحلها
    6. اليوم 6: مقارنة أداء مع Temporal
    7. اليوم 7: تقييم واتخاذ قرار الاستمرار
    FACT

    حقائق سريعة تحفظها

    نقاط مختصرة ترجع لها لاحقاً

    1. DBOSify هو بديل Temporal على Postgres فقط.

    2. المشروع أقل من 100 نجمة على GitHub وقت النشر.

    3. README غير مكتمل، التثبيت يتطلب خطوات إضافية.

    4. يتطلب Python 3.8+ وPostgreSQL 12+.

    5. غير منشور على PyPI، يجب التثبيت من المستودع.

    6. أظهر أداء أفضل بنسبة 20% في اختبار بسيط مقارنة بـ Temporal.

    7. مناسب للتجربة فقط، غير جاهز للإنتاج.

    8. المشروع لفت الانتباه على Hacker News.

    FAQ

    أسئلة شائعة

    إجابات مباشرة على ما يبحث عنه الزائر

    هل DBOSify متوافق مع Temporal API؟

    يدعي أنه drop-in replacement، لكن README غير مكتمل، لذا قد تحتاج تعديلات.

    هل يمكن استخدام DBOSify مع Python 3.7؟

    المتطلبات تقول Python 3.8+، قد لا يعمل على 3.7.

    كيف أشغل العامل (worker)؟

    أنشئ ملف worker.py يستورد سير العمل ويشغله، ثم نفّذ python worker.py.

    هل يدعم DBOSify قوائم انتظار متعددة؟

    نعم، عبر متغير DBOSIFY__QUEUE في .env.

    ما الفرق بين DBOSify وTemporal؟

    DBOSify يستخدم Postgres فقط، بينما Temporal يحتاج Cassandra وElasticsearch.

    ABC

    مصطلحات سريعة

    تعريفات مختصرة تمنع الالتباس

    DBOSify

    مكتبة Python مفتوحة المصدر لسير العمل الموزع تعتمد على Postgres فقط.

    Temporal

    منصة سير عمل موزعة ناضجة تحتاج Cassandra وElasticsearch.

    Drop-in replacement

    بديل مباشر يمكن استخدامه دون تغيير الكود.

    Q+

    أسئلة مرتبطة يبحث عنها الناس

    استخدمها كمسارات متابعة داخل نفس الموضوع

    كيفية تثبيت DBOSifyDBOSify vs Temporalبديل Temporal خفيفDBOSify PostgresDBOSify tutorialDBOSify GitHub

    لماذا هذا المرجع يتجاوز الموضوع نفسه؟

    تحول القارئ: من متشكك في المشاريع الجديدة إلى مقيّم واعٍ يجرب بحذر

    • قواعد البيانات: Postgres vs Cassandra
    • إدارة المهام الخلفية: Celery vs Temporal
    • أتمتة سير العمل: Airflow vs Prefect
    SAVE

    كيف تستخدم هذا المرجع لاحقاً؟

    القيمة الحقيقية تظهر عند العودة والتطبيق

    لا تتعامل معه كمقال يُقرأ مرة واحدة. استخدمه كلوحة تشغيل: ارجع للتشخيص عند ظهور المشكلة، وللقوالب عند التطبيق، ولمؤشرات القياس عند المراجعة.

    DBOSify فكرة واعدة لكنها غير ناضجة. إذا كنت تحب استكشاف أدوات جديدة، جربه في بيئة تطويرية. للإنتاج، التزم بالحلول المستقرة حالياً. تابع المشروع على GitHub لترى تطوره.

    UPD

    خطة تحديث هذا الدليل

    حتى يبقى المرجع صالحاً مع الوقت

    • تحقق من تحديثات README كل أسبوعين
    • تابع إصدارات PyPI عند النشر
    • اختبر مع إصدارات Python وPostgres الجديدة

    زارو — مكتبة الأدلة العملية

    نحو مكتبة أدلة عملية: تشخيص، تنفيذ، قياس، وتحديث مستمر.

    Evergreen Reference + GitHub Intelligence + Multi-Stage AI OS v8.0.0-EVERGREEN-GITHUB-AI-INTELLIGENCE-OS

    [Object]
    كاتب في Ficus Web | تقرير إخباري وقصة قصيرة

    مقالات ذات صلة

    اقتراحات مبنية على أول تصنيف مرتبط بالمقال الحالي

    التعليقات (0)

    لا توجد تعليقات بعد. كن أول من يبدأ النقاش 👇