Dokümantasyon / İşletim
Zamanlanmış istekler
Zamanlama, bir isteği işletim sisteminin kendi zamanlayıcısıyla, vakti gelince kendiliğinden çalıştırır. Sonucu yalnızca zamanlamayı kurarken onayladığınız kişilere gönderebilir.
Zamanlama nasıl çalışır
ivralo zamanlamalar için bir daemon çalıştırmaz. ivralo schedule add, işletim sisteminin zamanlayıcısına bir görev kaydeder; bu görev de belirlediğiniz saatte ivralo schedule run <name> komutunu çağırır. Bu çalıştırma, ivralo ask'ın pipe içinde yaptığı gibi başında kimsenin olmadığı bir çalıştırmadır: onay gerektiren hiçbir şeye izin verilmez.
| Platform | Zamanlayıcı | Görev nerede |
|---|---|---|
| Linux, macOS | cron | crontab'ınızda # ivralo:<name> etiketli tek bir satır |
| Windows | Task Scheduler | schtasks ile oluşturulan ivralo\<name> görevi |
macOS'ta da görev bir cron satırıdır; ivralo launchd job'u yazmaz. crontab'ınızın geri kalanına dokunulmaz.
Zamanlama eklemek
ivralo schedule add sales-report --every "weekly mon 09:00" \
--mail-to ali@example.com \
"produce the weekly sales report from sales.xlsx and e-mail it to ali@example.com"
Ad küçük harf, rakam ve tirelerden oluşur. Aynı adda bir zamanlama zaten varsa, ancak onay verirseniz ya da --yes kullanırsanız değiştirilir.
--every bilerek küçük tutulmuş bir söz dizimi kullanır. Daha karmaşık her zamanlama işletim sisteminin zamanlayıcısına kalır; orada elle kaydettiğiniz bir görev de ivralo schedule run <name> çağırabilir.
--every | Ne zaman çalışır |
|---|---|
daily HH:MM | Her gün o saatte |
weekdays HH:MM | Pazartesiden cumaya |
weekly <mon..sun> HH:MM | Haftada bir; mon 09:00 da olur |
monthly <1-31> HH:MM | Ayda bir, o gün |
hourly | Saatte bir; en sık seçenek bu |
Saatini beklemeden denemek
ivralo schedule run sales-report
run, görevin yapacağı işin tıpatıp aynısını yapar ve pipeline'ın bastığı JSON nesnesini ekrana basar (ok, reply, files, run_id, seconds, ...). Çalıştırma başarısız olursa 1 ile çıkar. Her çalıştırma bu nesneyi ayrıca workspace'te .ivralo/schedules/<name>/ altına tek bir dosya olarak bırakır.
Zamanlama neyi gönderebilir
Başında kimsenin olmadığı bir çalıştırma gönderim onayına cevap veremez. Bu yüzden böyle bir çalıştırmanın e-posta göndermesinin tek yolu --mail-to'dur ve onay bir kez, zamanlamayı oluştururken verilir:
- alıcılar o anda
IVRALO_MAIL_ALLOWEDile karşılaştırılır ve e-postanın ayarlı olması gerekir (IVRALO_MAIL); aksi haldeaddreddeder; - çalışma anında yalnızca bu adreslere gönderim yapılır; modelin uydurduğu adresler de dahil, başka her adres reddedilir;
--mail-toverilmemiş bir zamanlama hiç e-posta gönderemez.
--notify kısa mesajlar için aynı işi görür: zamanlama, ayarlı Telegram sohbetine ya da Slack webhook'una yazabilir. Sohbet ayarlarda sabit olduğu için bayrağı vermek onay yerine geçer. Bu ön onayların hiçbiri etkileşimli bir oturuma, düz bir ivralo ask'a ya da bir job'a geçmez; onlar her seferinde sormaya devam eder. Ayrıntılar için E-posta ve sohbet.
Job'ları akıtmak: --jobs
--jobs ile oluşturulan bir zamanlama istek almaz. Görev, zamanlamayı kurduğunuz workspace için ivralo jobs run çalıştırır. Böylece her seferinde kuyruktaki sıradaki job başlar, sonuna kadar çalışır ve görev çıkar:
ivralo schedule add jobs --every hourly --jobs
Görev o workspace'e sabitlenir (IVRALO_WORKSPACE); hangi dizinden çalışırsa çalışsın o workspace'in job'larını başlatır. --mail-to ya da --notify almaz: başlattığı job'lar başında kimse olmadan çalışır ve içlerinden birinde bir gönderim olursa job onay beklemek için park eder. JSON çalıştırma log'u yazılmaz; her çalıştırmanın çıktısı task.log içindedir.
Komutlar
| Komut | Ne yapar |
|---|---|
ivralo schedule (ya da schedule list) | Bütün zamanlamalar: ne zaman çalıştığı, kime e-posta atabileceği, görevin işletim sisteminde hâlâ kayıtlı olup olmadığı, son çalıştırma |
ivralo schedule add <name> --every "<when>" "<request>" | İşletim sistemine kaydeder ve ivralo tarafında saklar |
ivralo schedule run <name> | Hemen, başında kimse olmadan çalıştırır; görevin çağırdığı komut da budur |
ivralo schedule log <name> | Son çalıştırmalar: ne zaman, başarılı mı başarısız mı, kaç saniye, hangi dosyalar, cevabın ilk satırı (--limit, varsayılan 10) |
ivralo schedule remove <name> | Görevin kaydını siler ve zamanlamayı kaldırır; log'lar kalır. Önce onay ister, ya da --yes. |
Neler nerede
- ivralo ana dizinindeki
schedules.jsonbütün zamanlamaları tutar (IVRALO_SCHEDULESile yerini değiştirebilirsiniz). - Workspace'teki
.ivralo/schedules/<name>/klasöründe her çalıştırma için bir JSON dosyası ve komutun bastığı her şeyi içerentask.logbulunur. Bir çalıştırma hiçbir şey yapmamışsa ilk bakmanız gereken yer burası. - Görev, kurulumun kendi
ivralo'sunu mutlak yoluyla çağırır, çünkü cron'unPATH'i çok kısıtlıdır; ayrıca ana dizinden başlar.ivraloçalıştırılabilir dosyası bulunamazsaschedule addhiçbir şey kaydetmeden reddeder.
ivralo doctor'da bir schedules bölümü vardır: her zamanlamayı, görevin işletim sisteminde hâlâ kayıtlı olup olmadığını ve son çalıştırmanın nasıl geçtiğini gösterir.
Neler ters gidebilir
- Zamanlanan saatte model ayakta değil. Çalıştırma log'a başarısız olarak düşer, nedenini
ivralo doctorsöyler. Model sunucusunun makineyle birlikte açıldığından emin olun. - Kurulumun yeri değişti. Görevin komut satırı mutlak yol içerir. ivralo'yu başka bir yere kurduktan sonra
ivralo schedule add ... --yeskomutunu yeniden çalıştırın. - Çalıştırma hiçbir şey yapmadı.
.ivralo/schedules/<name>/altındakitask.log'a bakın. Başlamış bir çalıştırmanın JSON dosyasında birrun_idolur;ivralo trace <run_id>yaptığı bütün çağrıları gösterir.