مرجع السكربتات
تُوثّق هذه الصفحة واجهة برمجة التطبيقات العامة (public headless scripting API) المعروضة عبر حزمة Python المسماة studio.
تركز الوثائق على الرموز العامة التالية:
StudioScenarioinstall_logging_eventenable_logging_stdoutdisable_logging_stdout
إذا لم تقُم بتشغيل سيناريو في الوضع headless مسبقًا، فاقرأ قسم Headless أولاً ثم عد إلى هنا للحصول على تفاصيل الـ API.
الاستيراد
كل واجهات الـ API الموثقة هنا يتم تصديرها من الحزمة العلوية studio:
from studio import (
StudioScenario,
install_logging_event,
enable_logging_stdout,
disable_logging_stdout,
)تعريفات الأنواع (Type Stubs)
السطح العام للعمل في الوضع headless يمكن إيجاده كالتالي:
StudioScenario
StudioScenario هو نقطة الدخول الرئيسية لعمليات تحميل وتشغيل ملف .pmod بدون واجهة سطح المكتب (desktop UI).
المُنشئ
verification_code
تُستخدم هذه القيمة لتكوين الترخيص (licensing) للتنفيذ في الوضع headless.
الأنماط الشائعة:
جهاز محلي / خادم: مرّر سلسلة رمز التحقق (verification code).
Docker / CI: قم بتركيب ملف الترخيص داخل الحاوية ومرّر مسار الملف (path) كـ
verification_code.
بالنسبة للبيئات غير التفاعلية (مثل Docker/CI/الخدمات)، مرّر دائمًا verification_code بشكل صريح.
دورة الحياة النموذجية
في معظم السكربتات ستقوم بالخطوات التالية:
إنشاء السيناريو (
StudioScenario(...))تحميل ملف
.pmod(load_scenario(...))تشغيله (
run(...))التنظيف (
cleanup())
تحميل ملف .pmod
تُرجع
StudioScenarioعند النجاح.تُرجع
Noneإذا كان المسار غير موجود.
إذا كان السيناريو يشير إلى موارد خارجية، فاحفظ نفس هيكل المجلدات المستخدم على سطح المكتب (راجع قسم “Transferring .pmod files”).
تشغيل سيناريو
يتحقق وقت التشغيل من أن عدد الوسائط (arguments) يطابق عدد مداخل السيناريو.
إذا كان ملف .pmod يحتوي على:
0 مدخلات: استدعِ
scenario.run()أوscenario.run(())مدخل واحد: استدعِ
scenario.run((value,))مدخلان: استدعِ
scenario.run((value1, value2))
يجب أن يكون args عبارة عن tuple. للمُدخل الواحد، تذكّر الفاصلة في النهاية: (value,).
مزيد من أساليب StudioScenario
يغطي هذا القسم طرقًا عامة إضافية يمكن استخدامها للأتمتة والتصحيح.
التحميل بدون الفشل عند عدم وجود موارد
إذا كنت تنقل سيناريوهات بين آلات/حاويات وبعض الموارد قد تكون غير متاحة، يمكنك التحميل بتسامح أكبر:
التحميل / الحفظ
العقد المخصصة (Custom nodes)
تحميل وحدات Python للعقد المخصصة من مجلد:
هذا يستورد ملفات Python ديناميكيًا. قم بتحميل كود موثوق فقط.
اسم السيناريو
المنافذ (مدخلات/مخرجات السيناريو)
يمكنك استعلام أسماء منافذ الإدخال/الإخراج:
تشغيل خادم ويب (اختياري)
إذا رغبت في كشف مشغل السيناريو عبر HTTP:
الأحداث (Events)
تثبيت ردود نداء (callbacks) حول دورة حياة تنفيذ السيناريو:
مساعدات السجل (Logging Helpers)
يمتلك AugeLab Studio نظام سجل وقت تشغيل يُستخدم بواسطة البلوكات والسيناريوهات. في الوضع headless عادةً تريد أحد الخيارات التالية:
طباعة السجلات إلى stdout أثناء التطوير
إعادة توجيه السجلات إلى نظام التسجيل الخاص بك
تلك المساعدات عامة (global) وتؤثر على مسجل وقت التشغيل المستخدم بواسطة سيناريوهاتك في الوضع headless.
enable_logging_stdout()
يفعّل طباعة سجلات وقت التشغيل بشكل "موجَّه" إلى stdout.
استخدم هذا عندما تريد رؤية سجلات البلوكات/السيناريو في الكونسول:
disable_logging_stdout()
يعطّل طباعة سجلات وقت التشغيل إلى stdout.
مفيد عندما:
تستخدم
install_logging_event(...)وتريد تجنب تكرار السجلاتتريد إخراجًا نظيفًا (فقط مخرجات
print(...)أو سجلك الخاص)
install_logging_event(event: Callable[[str], None])
يثبت رد نداء يستقبل رسائل السجل في وقت التشغيل.
هذا أسهل طريقة لدمج سجلات AugeLab في إطار تسجيل الخاص بك.
StudioScenario.install_logging_hook(hook, level=0)
إذا فضّلت تثبيت hook على مستوى السيناريو مع تصفية بمستوى محدد، استخدم:
اجعل رد النداء سريعًا. إذا كنت بحاجة لإجراء عمل ثقيل (I/O، شبكة)، فكّر في تخزين الرسائل مؤقتًا ومعالجتها في خيط/عملية أخرى.
أنماط موصى بها
1) متغير بيئي لترخيص التشغيل
بالنسبة للسكربتات التي تعمل في بيئات مختلفة (محلي مقابل CI مقابل Docker)، تمرير verification_code عبر متغير بيئي يجعل الشيفرة قابلة للنقل:
2) التنظيف دائمًا باستخدام try/finally
آخر تحديث