Scripting Reference
Bu sayfa, studio Python paketinin sunduğu kamuya açık başsız (headless) betik API'sini belgelendirir.
Burada şu herkese açık sembollere odaklanır:
StudioScenarioinstall_logging_eventenable_logging_stdoutdisable_logging_stdout
Daha önce bir senaryoyu başsız (UI olmadan) çalıştırmadıysanız önce Headless bölümünü okuyun, ardından API ayrıntarları için buraya geri dönün.
İçe Aktarımlar
Buradaki tüm API'ler üst seviye studio paketinden dışa aktarılır:
from studio import (
StudioScenario,
install_logging_event,
enable_logging_stdout,
disable_logging_stdout,
)Tip İpuçları (Type Stubs)
Kamuya açık başsız yüzeyi şöyle görünür:
StudioScenario
StudioScenario, bir .pmod dosyasını masaüstü UI'sı olmadan yüklemek ve çalıştırmak için ana giriş noktasıdır.
Yapıcı (Constructor)
verification_code
Bu değer, başsız çalıştırma için lisanslamayı yapılandırmakta kullanılır.
Yaygın kullanım örnekleri:
Yerel makine / sunucu: doğrulama kodu dizesini verin.
Docker / CI: lisans dosyasını konteynere bağlayıp
verification_codeolarak dosya yolunu verin.
Uyarı: Etkileşimsiz ortamlarda (Docker/CI/servisler)
verification_codedeğerini her zaman açıkça verin.
Tipik yaşam döngüsü
Çoğu betikte şu adımları izlersiniz:
Senaryoyu oluşturun (
StudioScenario(...))Bir
.pmodyükleyin (load_scenario(...))Çalıştırın (
run(...))Temizlik yapın (
cleanup())
Bilgi:
cleanup()uzun süre çalışan süreçlerde (servisler, batch işleri) belleği serbest bırakmak ve çalışma zamanı durumunu sıfırlamak için önemlidir.
Bir .pmod yükleme
Başarılıysa
StudioScenariodöner.Yol mevcut değilse
Nonedöner.
Senaryonuz harici kaynaklara referans veriyorsa, masaüstünde kullandığınız aynı dizin yapısını koruyun (bkz. “Transferring .pmod files” bölümü).
Bir senaryoyu çalıştırma
Çalışma zamanı, argüman sayısının senaryodaki giriş sayısıyla eşleştiğini doğrular.
.pmod dosyanızda:
0 giriş varsa:
scenario.run()veyascenario.run(())çağırın1 giriş varsa:
scenario.run((value,))çağırın2 giriş varsa:
scenario.run((value1, value2))çağırın
Uyarı:
argsbir tuple olmalıdır. Tek giriş için sonuna virgül eklemeyi unutmayın:(value,).
Diğer StudioScenario Metodları
Bu bölüm, otomasyon ve hata ayıklama için kullanabileceğiniz ek herkese açık metodları kapsar.
Eksik kaynaklarda yüklemenin başarısız olmasını engelleme
Eğer senaryoları makineler/konteynerler arasında taşıyorsanız ve bazı kaynaklar eksik olabiliyorsa daha toleranslı yükleme seçeneğini kullanabilirsiniz:
Yükleme / kaydetme
Özel düğümler (custom nodes)
Bir klasörden özel düğüm Python modüllerini yükleyin:
Uyarı: Bu, Python dosyalarını dinamik olarak içe aktarır. Yalnızca güvendiğiniz kodları yükleyin.
Senaryo adı
Portlar (senaryo girişleri/çıkışları)
Giriş/çıkış port isimlerini sorgulayabilirsiniz:
Bir web sunucusu çalıştırma (isteğe bağlı)
Senaryo çalıştırıcısını HTTP üzerinden açmak isterseniz:
Olaylar (Events)
Senaryo yürütme yaşam döngüsüne ilişkin geri çağırmaları (callback) kurun:
Günlükleme (Logging) Yardımcıları
AugeLab Studio, bloklar ve senaryolar tarafından kullanılan bir çalışma zamanı kaydedicisine (logger) sahiptir. Başsız modda tipik olarak şu seçeneklerden birine ihtiyaç duyarsınız:
geliştirme sırasında günlükleri stdout'a yazdırmak
günlükleri kendi kayıt sisteminize iletmek
Bu yardımcılar globaldir (başsız senaryonuz tarafından kullanılan çalışma zamanı kaydedicisini etkiler).
enable_logging_stdout()
Çalışma zamanı günlüklerini stdout'a yazdırmayı etkinleştirir.
Konsolda blok/senaryo günlüklerini görmek istediğinizde kullanın:
disable_logging_stdout()
Çalışma zamanı günlüklerinin stdout'a yazdırılmasını devre dışı bırakır.
Aşağıdaki durumlarda kullanışlıdır:
install_logging_event(...)kullanıyor ve günlüklerin çift görünmesini istemiyorsanızyalnızca kendi
print(...)/kendi logger çıktınızı görmek istiyorsanız
install_logging_event(event: Callable[[str], None])
Çalışma zamanı günlük mesajlarını alan bir geri çağırma (callback) kurar.
AugeLab çalışma zamanı günlüklerini kendi Python logging çerçevenize entegre etmenin en kolay yoludur.
StudioScenario.install_logging_hook(hook, level=0)
Eğer her bir senaryo için seviye filtrelemesiyle birlikte hook kurmayı tercih ediyorsanız, şu şekilde kullanın:
Uyarı: Geri çağırmanızı hızlı tutun. Ağır iş (I/O, ağ) gerekiyorsa mesajları tamponlayıp başka bir thread/process içinde işlemek daha iyidir.
Önerilen Kalıplar (Recommended Patterns)
1) Lisanslama için ortam değişkeni (Environment variable)
Yerel/CI/Docker gibi farklı ortamlarda çalışan betikler için verification_code değerini ortam değişkeni ile geçirmek kodun taşınabilirliğini artırır:
2) Her zaman try/finally ile cleanup
Son güncelleme