Betik (Scripting) Referansı

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:

  • StudioScenario

  • install_logging_event

  • enable_logging_stdout

  • disable_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_code olarak dosya yolunu verin.

Uyarı: Etkileşimsiz ortamlarda (Docker/CI/servisler) verification_code değerini her zaman açıkça verin.


Tipik yaşam döngüsü

Çoğu betikte şu adımları izlersiniz:

  1. Senaryoyu oluşturun (StudioScenario(...))

  2. Bir .pmod yükleyin (load_scenario(...))

  3. Çalıştırın (run(...))

  4. 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 StudioScenario döner.

  • Yol mevcut değilse None dö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() veya scenario.run(()) çağırın

  • 1 giriş varsa: scenario.run((value,)) çağırın

  • 2 giriş varsa: scenario.run((value1, value2)) çağırın

Uyarı: args bir 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ız

  • yalnı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.


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

Last updated