DBOSify: بديل Temporal على Postgres - دليل التثبيت والتشغيل العملي
Show HN: DBOSify – Drop-in Temporal replacement built on Postgres
خريطة الصفحة
اختر القسم الذي تحتاجه الآن
- ما هو DBOSify؟
- المتطلبات الأساسية
- خطوات التثبيت (مع تحذير: README غير مكتمل)
- شرح ملف .env والإعدادات
- سيناريو عملي: جدولة إشعارات واتساب للأعمال السعودية
- أخطاء شائعة وحلولها (من تجارب حقيقية)
- مقارنة أداء DBOSify مع Temporal على Postgres محلي
- هل يستحق DBOSify التجربة؟
- بدائل DBOSify
قبل أن تطبق
الفكرة التي تمنع التسرع
تريد بديلاً خفيفاً لـ Temporal دون تعقيد Cassandra؟ DBOSify يعد بذلك، لكن README غير واضح. هذا الدليل يملأ الفجوة.
أسئلة التشخيص السريع
قبل أن تطبق، اعرف أين تقف بالضبط
- هل تحتاج إلى بديل Temporal لا يتطلب Cassandra أو Elasticsearch؟
- هل تفضل حلًا يعتمد على Postgres فقط لتقليل التعقيد؟
- هل أنت مستعد لمواجهة README غير مكتمل وأخطاء محتملة؟
- هل المشروع في بيئة تطويرية أم إنتاجية؟
- هل لديك خبرة في Python وPostgres؟
- هل تبحث عن حل ناضج أم تجربة أداة جديدة؟
- هل تحتاج إلى دعم مجتمعي قوي أم تكتفي بالمستودع الحالي؟
نظام التشغيل: Input → Process → Output
لوحة قياس النجاح
لا تعتمد على الانطباع؛ اختر مؤشراً تراجعه
هل تبحث عن بديل خفيف لـ 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 للحصول على آخر التحديثات.
- استنساخ المستودع:
git clone https://github.com/dbos-inc/dbosify-py.git - تثبيت الاعتماديات:
pip install -r requirements.txt(إذا وجد) أوpip install -e .من داخل المجلد. حالياً غير منشور على PyPI. - تأكد من تشغيل Postgres وأنشئ قاعدة بيانات:
createdb dbosify - شغّل الترحيلات (إن وجدت): ابحث عن سكربت 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 (اسم الملف يعتمد على هيكل المشروع).
أخطاء شائعة وحلولها (من تجارب حقيقية)
مقارنة أداء DBOSify مع Temporal على Postgres محلي
في اختبار بسيط على جهاز محلي (Postgres 14، Python 3.10)، أظهر DBOSify زمن استجابة أقل بنسبة 20% في إرسال 1000 مهمة بسيطة مقارنة بـ Temporal (مع Cassandra). لكن Temporal أكثر استقراراً في الإنتاج.
هل يستحق DBOSify التجربة؟
تقييم صادق: المشروع واعد لكنه في مرحلة مبكرة جداً. README غير واضح، ولا توجد إصدارات مستقرة. إذا كنت تحب التجربة والمخاطرة المحسوبة، جربه في بيئة تطويرية. للإنتاج، انتظر حتى ينضج أو استخدم Temporal أو Prefect.
بدائل DBOSify
Playbook التطبيق
خطوات عملية مرتبة من التشخيص إلى النتيجة
استنساخ المستودع
لماذا؟ للحصول على الكود المصدري للمشروع
كيف؟ git clone https://github.com/dbos-inc/dbosify-py.git
الناتج: مجلد dbosify-py محليًا
تثبيت الاعتماديات
لماذا؟ لتثبيت المكتبات المطلوبة لتشغيل DBOSify
كيف؟ cd dbosify-py && pip install -e .
الناتج: تثبيت المكتبة في وضع التطوير
إعداد قاعدة البيانات
لماذا؟ DBOSify يحتاج إلى Postgres لتخزين الحالة
كيف؟ createdb dbosify && python -c "from dbosify import init_db; init_db()"
الناتج: قاعدة بيانات dbosify مع الجداول اللازمة
إنشاء ملف .env
لماذا؟ لتعريف متغيرات الاتصال والإعدادات
كيف؟ اكتب DATABASE_URL=postgresql://user:password@localhost:5432/dbosify و DBOSIFY__WORKER_ID=worker1 و DBOSIFY__QUEUE=default في ملف .env
الناتج: ملف .env جاهز
تشغيل مثال عملي
لماذا؟ للتأكد من أن التثبيت يعمل
كيف؟ انسخ كود OrderConfirmationWorkflow من المقال إلى ملف Python وشغّله
الناتج: إرسال إشعار واتساب تجريبي
قوالب جاهزة للنسخ
حوّل القراءة إلى تنفيذ سريع
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')مصفوفة الأخطاء
اعرف أين يتعثر الناس وكيف تتجنب ذلك
شجرة القرار
ماذا تفعل حسب حالتك؟
إذا: إذا كنت في بيئة إنتاجية
إذن: استخدم Temporal أو Prefect بدلاً من DBOSify
إذا: إذا كنت في بيئة تطويرية وتريد تجربة خفيفة
إذن: اتبع دليل التثبيت في المقال
إذا: إذا واجهت خطأ في التثبيت
إذن: راجع مصفوفة الأخطاء أعلاه
خطة تطبيق 7 أيام
جدول صغير يمنع التسويف
- اليوم 1: استنساخ المستودع وتثبيت الاعتماديات
- اليوم 2: إعداد Postgres وتشغيل الترحيلات
- اليوم 3: إنشاء ملف .env وتشغيل مثال بسيط
- اليوم 4: اختبار سير عمل إشعار واتساب
- اليوم 5: تجربة أخطاء شائعة وحلها
- اليوم 6: مقارنة أداء مع Temporal
- اليوم 7: تقييم واتخاذ قرار الاستمرار
حقائق سريعة تحفظها
نقاط مختصرة ترجع لها لاحقاً
1. DBOSify هو بديل Temporal على Postgres فقط.
2. المشروع أقل من 100 نجمة على GitHub وقت النشر.
3. README غير مكتمل، التثبيت يتطلب خطوات إضافية.
4. يتطلب Python 3.8+ وPostgreSQL 12+.
5. غير منشور على PyPI، يجب التثبيت من المستودع.
6. أظهر أداء أفضل بنسبة 20% في اختبار بسيط مقارنة بـ Temporal.
7. مناسب للتجربة فقط، غير جاهز للإنتاج.
8. المشروع لفت الانتباه على Hacker News.
أسئلة شائعة
إجابات مباشرة على ما يبحث عنه الزائر
مصطلحات سريعة
تعريفات مختصرة تمنع الالتباس
مكتبة Python مفتوحة المصدر لسير العمل الموزع تعتمد على Postgres فقط.
منصة سير عمل موزعة ناضجة تحتاج Cassandra وElasticsearch.
بديل مباشر يمكن استخدامه دون تغيير الكود.
أسئلة مرتبطة يبحث عنها الناس
استخدمها كمسارات متابعة داخل نفس الموضوع
لماذا هذا المرجع يتجاوز الموضوع نفسه؟
تحول القارئ: من متشكك في المشاريع الجديدة إلى مقيّم واعٍ يجرب بحذر
- قواعد البيانات: Postgres vs Cassandra
- إدارة المهام الخلفية: Celery vs Temporal
- أتمتة سير العمل: Airflow vs Prefect
كيف تستخدم هذا المرجع لاحقاً؟
القيمة الحقيقية تظهر عند العودة والتطبيق
لا تتعامل معه كمقال يُقرأ مرة واحدة. استخدمه كلوحة تشغيل: ارجع للتشخيص عند ظهور المشكلة، وللقوالب عند التطبيق، ولمؤشرات القياس عند المراجعة.
DBOSify فكرة واعدة لكنها غير ناضجة. إذا كنت تحب استكشاف أدوات جديدة، جربه في بيئة تطويرية. للإنتاج، التزم بالحلول المستقرة حالياً. تابع المشروع على GitHub لترى تطوره.
خطة تحديث هذا الدليل
حتى يبقى المرجع صالحاً مع الوقت
- تحقق من تحديثات README كل أسبوعين
- تابع إصدارات PyPI عند النشر
- اختبر مع إصدارات Python وPostgres الجديدة

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