n8n'de Cron ve Schedule Trigger'ı doğru yapılandırma: Suçlu neredeyse her zaman saat dilimidir
Cron ifadesi neredeyse her zaman doğrudur, saat dilimi değil. Üç gerçek n8n forum vakası, Schedule Trigger'ların neden yanlış zamanda tetiklendiğini gösteriyor.
Schedule Trigger'daki cron ifadesi neredeyse her zaman doğrudur. Pratikte genellikle doğru olmayan şey, n8n'in bu ifadeyi değerlendirdiği saat dilimidir. Tam olarak bu örüntü, bu yazıda ayrıntılı olarak inceleyeceğimiz n8n forumundaki üç gerçek konu boyunca kendini gösteriyor: Queue modunda bir ekip, Brezilya'da bir kullanıcı ve workflow ayarı GMT olarak belirlenmiş olmasına rağmen bir saatlik farka şaşıran Londra'da bir kullanıcı. Üç durumda da cron ifadesinin kendisi doğruydu, neden bir seviye daha derinde yatıyordu.
Schedule Trigger'ın resmi dokümantasyonuna göre, node birkaç seviyeli bir saat dilimi hiyerarşisi kullanır ve sürprizlerin çoğu tam olarak burada ortaya çıkar. n8n'in bu seviyeleri nasıl çözdüğünü anlarsan, saat dilimi hatalarının neredeyse tamamını canlıya geçmeden önce önleyebilirsin. Güncel durum: Temmuz 2026.
Schedule Trigger cron ifadelerini nasıl yorumlar
Özel modda Schedule Trigger, dokümantasyona göre altı alanlı klasik bir cron ifadesini kabul eder; burada altıncı, isteğe bağlı alan saniyeleri, ardından dakika, saat, ayın günü, ay ve haftanın günü gelir. Dokümantasyon bu konuda yaygın kalıpları içeren bir referans tablosu listeler:
- Her X saniyede bir: `*/10 * * * * *`
- Her X dakikada bir: `*/5 * * * *`
- Saatlik: `0 * * * *`
- Günlük: `0 6 * * *`
- Haftalık: `0 12 * * 1`
- Aylık: `0 0 1 * *`
Test için n8n'in kendisi, bir ifadeyi önceden crontab.guru üzerinde kontrol etmeyi önerir, ancak isteğe bağlı saniye sütunu olmadan, çünkü bu araç yalnızca beş alan tanır. Tam olarak bu adım, saat dilimi tuzaklarına girmeden önce sözdizimi hatalarını dışlamana yardımcı olur. İfadenin kendisi, herkese açık olarak tartışılan sorunların neredeyse tamamında sorunsuzdur, sorun ancak ondan sonra, n8n'in bu ifadeyi aslında hangi saat diliminde değerlendirdiği sorusuyla başlar.
Saat dilimi hiyerarşisi: Instance, Workflow ve Worker
n8n, saat dilimi için net bir öncelik sırası belirler. Workflow'un kendisinde bir saat dilimi ayarlanmışsa, bu geçerlidir. Eksikse, n8n instance saat dilimine geri döner. Kendi barındırılan instance'larda varsayılan değer UTC veya sunucunun saat dilimi değil, dokümantasyona göre `America/New_York`'tur. n8n Cloud'da sistem, hesap sahibinin saat dilimini otomatik olarak algılamaya çalışır, algılama başarısız olursa GMT'ye geri döner.
Schedule Trigger'ın yaygın sorunlar sayfası tam olarak bu mekanizmayı en yaygın hata kaynağı olarak tanımlar ve iki ayar noktası belirtir: Workflow seviyesinde saat dilimi, canvas'ın sağ üst köşesindeki üç nokta, ardından Settings ve Timezone parametresi üzerinden ayarlanabilir. Tüm instance için genel olarak, kendi barındırılan kurulumlarda bunun yerine `GENERIC_TIMEZONE` ortam değişkenini ayarlarsın. Önemli olan: Bu değişken instance'ı etkiler, aşağıdaki ilk vakanın gösterdiği gibi bu instance'a ait her bir süreci otomatik olarak etkilemez.
n8n forumundan üç gerçek vaka
Vaka 1: Queue modu, doğru yapılandırılmış, yine de yanlış
Şu konuda: "Schedule Trigger executing at wrong time" bir kullanıcı, pazar günleri saat 3'te PST'de çalışması gereken ama aslında saat 19'da tetiklenen haftalık bir trigger'ı anlatıyor. Hem workflow ayarı hem de kurulum saat dilimi doğru şekilde PST'ye ayarlıydı, eski bir Cron node'u bile paralel olarak hatasız çalışıyordu. Kullanıcı çözümü kendisi buldu: "We use n8n in queue mode - and it turns out, I forgot to set the timezone parameters on the workers!!!" Ana instance'ın saat dilimi doğruydu, ancak Kubernetes'teki ayrı worker pod'ları değildi. Worker deployment'larında TZ ortam değişkeni ayarlandıktan sonra test workflow'u, kullanıcının doğruladığı gibi "on the dot" çalıştı. n8n'i Queue modunda çalıştıranlar, saat dilimini yalnızca ana instance'da değil, her bir bileşende ayrı ayrı ayarlamalıdır.
Vaka 2: Brezilya ve sessiz varsayılan değer
Şu konuda: "Schedule Trigger - what's the time zone?" Brezilya'dan (UTC-3) bir kullanıcı tam olarak iki saatlik bir fark bildiriyor: Saat 11 için planlanmış bir trigger, bunun yerine saat 13'te çalıştı. Neden, basitçe kimse açıkça başka bir şey yapılandırmadığında n8n'in kendi barındırılan instance'larda uyguladığı, üzerine yazılmamış varsayılan değer `America/New_York`'tu. Çözüm olarak iki yol belirtildi: ya saat dilimini doğrudan workflow içinde Settings üzerinden değiştirmek ya da Docker Compose dosyasında veya Docker imajında `GENERIC_TIMEZONE` ile global olarak ayarlamak. Yeni bir n8n kurulumu yapan biri, bu değişkeni ilk yanlış tetiklenen trigger'dan sonra eklemek yerine baştan itibaren düşünmelidir.
Vaka 3: Londra, yaz saati ve GMT etrafındaki yanlış anlama
Şu konuda: "Schedule Trigger and Confusion Over Time Zone Settings" kullanıcı kpakfar, yaz saatini de doğru şekilde gösteren Londra saatini gösteren `DateTime.now()` ile görünüşe göre GMT olarak adlandırılan ayara göre çalışan Schedule Trigger arasındaki bir saatlik farka şaşırdı. Topluluk üyesi ihortom, trigger'ın gerçekte GMT 00:00 ifadesine göre değil, Londra saatine göre doğru çalıştığını açıklığa kavuşturdu. Buna ilişkin ipucu: Yaz saati geçişi olmadan gerçekten sabit bir saat dilimi isteyenlerin açıkça "(GMT+00:00) GMT (no daylight saving)" seçeneğini seçmesi gerekir. Bir şehirle ilişkilendirilmiş normal saat dilimi seçeneği, etiketi bunu ilk bakışta göstermese bile yaz saatini otomatik olarak dikkate alır. Yaz saatinden bağımsız sabit UTC saatlerine ihtiyaç duyanlar, örneğin bizzat UTC konuşan sistemler için, şehir tabanlı bir saat dilimi yerine özellikle yaz saati içermeyen varyantı seçmelidir.
Saat dilimini güvenilir şekilde nasıl ayarlarsın
- Cron ifadesini ayrı olarak kontrol et: Saat dilimiyle uğraşmadan önce, isteğe bağlı saniye alanı olmadan salt sözdizimini önceden crontab.guru üzerinde test et.
- Workflow saat dilimini açıkça ayarla: Instance varsayılanına güvenme, saat dilimini workflow ayarlarına gir, özellikle farklı hedef kitleler veya ülkeler için birden fazla workflow varsa.
- Self-hosting'de `GENERIC_TIMEZONE`'u ayarla: Bu değişken olmadan, sunucunun aslında nerede çalıştığından bağımsız olarak instance `America/New_York` üzerinde kalır.
- Queue modu: worker'ları unutma: Saat dilimini her worker deployment'ında ayrı ayrı ayarla, doğru yapılandırılmış bir ana instance tek başına yeterli değildir.
- Yaz saatine bilinçli karar ver: Yaz saati otomatik olarak uygulanacaksa şehir tabanlı bir saat dilimi seç, mevsimden bağımsız kesin bir UTC saatine ihtiyacın varsa yaz saati içermeyen sabit bir varyant seç.
NordFlux'ta, tek bir instance'da olsun veya birden fazla worker'la Queue modunda olsun, cron trigger'ların baştan itibaren doğru saat diliminde çalışması için n8n workflow'larını kuruyoruz. Böylece zamana duyarlı otomasyonların güvenilir kalır ve dijital çalışanlarının gerçekten ne zaman devreye girdiği üzerinde kontrolü elinde tutarsın. Yaklaşımımız hakkında daha fazla bilgiyi NordFlux'un n8n otomasyonu sayfasında bulabilirsin.
Sık sorulan sorular
İfade doğru olmasına rağmen cron trigger'ım neden yanlış zamanda çalışıyor?
Vakaların büyük çoğunluğunda sorun cron ifadesinin kendisinde değil, n8n'in onu değerlendirdiği saat diliminde yatar. Önce workflow ayarlarını, ardından instance saat dilimini, Queue modunda ise ayrıca her worker'daki saat dilimini kontrol et.
Hiçbir şey ayarlamazsam n8n'in varsayılan saat dilimi nedir?
Kendi barındırılan instance'larda dokümantasyona göre varsayılan değer `America/New_York`'tur. n8n Cloud'da sistem saat dilimini otomatik olarak algılamaya çalışır ve algılama başarısız olursa GMT'ye geçer. Her iki varsayılan değer de nadiren tesadüfen gerçek saat dilimine denk gelir.
Tek bir workflow için saat dilimini nasıl ayarlarım?
Workflow'u canvas'ta aç, sağ üst köşedeki üç noktaya tıkla, Settings'i seç ve Timezone parametresini ayarla. Bu ayar, instance saat dilimini yalnızca bu tek workflow için geçersiz kılar.
Queue modunda ayrıca bir şeye dikkat etmem gerekir mi?
Evet. Trigger'lar ayrı worker süreçlerinde çalıştırıldığı için, ana instance'ın saat dilimi ayarı Queue modunda yeterli değildir. Uygun TZ ortam değişkenini her worker deployment'ında ayarla, aksi takdirde ana instance doğru yapılandırılmış olsa bile trigger yine de yanlış zamanda tetiklenebilir.
Yaz saati nedeniyle oluşan sürprizlerden nasıl kaçınırım?
Londra veya Berlin gibi şehir tabanlı bir saat dilimi, yaz ve kış saatine otomatik olarak uyum sağlar. Bunun yerine mevsimden bağımsız sabit bir saat istiyorsan, yalnızca etikete güvenmek yerine açıkça yaz saati içermeyen bir saat dilimi seçeneği seç.
NordFlux UG (haftungsbeschränkt)
NordFlux, kuruluşlar için dijital çalışanlar kurar: tekrar eden işleri üstlenen otomasyonlar ve KI ajanları. Kontrol sizde kalır.
Otomasyon veya KI hakkında somut sorularınız mı var?
Ücretsiz bir ön analizde durumunuzu doğrudan görüşürüz. Bağlayıcı değildir.