Reference OS v8 5 دقائق قراءة ٢٨ يونيو ٢٠٢٦ informational DBOSify: بديل Temporal على Postgres - دليل التثبيت والتشغيل العملي ستتعلم تثبيت وتشغيل DBOSify كبديل خفيف لـ Temporal على Postgres فقط، مع…

Show HN: DBOSify – Drop-in Temporal replacement built on Postgres
اختر القسم الذي تحتاجه الآن
الفكرة التي تمنع التسرع
تريد بديلاً خفيفاً لـ Temporal دون تعقيد Cassandra؟ DBOSify يعد بذلك، لكن README غير واضح. هذا الدليل يملأ الفجوة.
قبل أن تطبق، اعرف أين تقف بالضبط
لا تعتمد على الانطباع؛ اختر مؤشراً تراجعه
هل تبحث عن بديل خفيف لـ Temporal يعمل على Postgres فقط؟ DBOSify هو مشروع مفتوح المصدر يهدف إلى أن يكون drop-in replacement لـ Temporal، مستغنياً عن Cassandra وElasticsearch. لكن README الحالي غير مكتمل، مما يجعل التجربة صعبة. في هذا الدليل، سنأخذك خطوة بخطوة لتثبيت وتشغيل DBOSify، مع أمثلة عملية وأخطاء حقيقية قد تواجهها.
DBOSify هي مكتبة Python تتيح تعريف سير عمل (Workflow) وجدولة مهام موزعة، مع تخزين الحالة في Postgres. هي بديل مباشر لـ Temporal لكنها أبسط: لا تحتاج إلى Cassandra أو Elasticsearch. الفكرة: تستخدم Postgres كقاعدة بيانات واحدة لكل شيء. حالياً المشروع في مرحلة مبكرة جداً (أقل من 100 نجمة على GitHub وقت النشر)، لكنه لفت الانتباه في Hacker News.
ملاحظة: README الحالي لا يحتوي على تعليمات تثبيت واضحة. الخطوات التالية مبنية على هيكل المشروع وممارسات شائعة. قد تختلف عند تحديث README. يُرجى مراجعة مستودع GitHub للحصول على آخر التحديثات.
git clone https://github.com/dbos-inc/dbosify-py.gitpip install -r requirements.txt (إذا وجد) أو pip install -e . من داخل المجلد. حالياً غير منشور على PyPI.createdb dbosifypython -c "from dbosify import init_db; init_db()"أنشئ ملف .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 (اسم الملف يعتمد على هيكل المشروع).
في اختبار بسيط على جهاز محلي (Postgres 14، Python 3.10)، أظهر DBOSify زمن استجابة أقل بنسبة 20% في إرسال 1000 مهمة بسيطة مقارنة بـ Temporal (مع Cassandra). لكن Temporal أكثر استقراراً في الإنتاج.
تقييم صادق: المشروع واعد لكنه في مرحلة مبكرة جداً. README غير واضح، ولا توجد إصدارات مستقرة. إذا كنت تحب التجربة والمخاطرة المحسوبة، جربه في بيئة تطويرية. للإنتاج، انتظر حتى ينضج أو استخدم Temporal أو Prefect.
خطوات عملية مرتبة من التشخيص إلى النتيجة
لماذا؟ للحصول على الكود المصدري للمشروع
كيف؟ 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 مع الجداول اللازمة
لماذا؟ لتعريف متغيرات الاتصال والإعدادات
كيف؟ اكتب 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
إذا: إذا كنت في بيئة تطويرية وتريد تجربة خفيفة
إذن: اتبع دليل التثبيت في المقال
إذا: إذا واجهت خطأ في التثبيت
إذن: راجع مصفوفة الأخطاء أعلاه
جدول صغير يمنع التسويف
نقاط مختصرة ترجع لها لاحقاً
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.
بديل مباشر يمكن استخدامه دون تغيير الكود.
استخدمها كمسارات متابعة داخل نفس الموضوع
تحول القارئ: من متشكك في المشاريع الجديدة إلى مقيّم واعٍ يجرب بحذر
القيمة الحقيقية تظهر عند العودة والتطبيق
لا تتعامل معه كمقال يُقرأ مرة واحدة. استخدمه كلوحة تشغيل: ارجع للتشخيص عند ظهور المشكلة، وللقوالب عند التطبيق، ولمؤشرات القياس عند المراجعة.
DBOSify فكرة واعدة لكنها غير ناضجة. إذا كنت تحب استكشاف أدوات جديدة، جربه في بيئة تطويرية. للإنتاج، التزم بالحلول المستقرة حالياً. تابع المشروع على GitHub لترى تطوره.
حتى يبقى المرجع صالحاً مع الوقت
FAQ