Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Python `schedule` ile Cron Job Yazdım, Bilgisayar Uyuyunca Her Şey Çöküyor!

✖ Kapat
Duyuru
✖ Kapat
Duyuru

devster

Okur Üye
Üye
Katılım
14 Mart 2026
Mesajlar
53
Kafayı yiyecektim arkadaşlar. Şaka gibi bir sorun. Uzun süre çalışması gereken, belirli aralıklarla bir API'den veri çekip veritabanına yazan bir script yazdım. Tabii ki Python'da, tabii ki de schedule kütüphanesiyle. "Ne güzel, time.sleep()'le uğraşmıyorum" diye seviniyordum. Terminalde çalıştırıyorum, mükemmel gidiyor. Ta ki bilgisayarımı kapatmayıp, sadece ekranı kapattığım veya uyku moduna geçirdiğim ana kadar.

🤯 Uyandığımda Felaket

Sabah bilgisayarı açtım, terminale baktım. Script çalışıyor gibi görünüyor ama son log satırı 6 saat önceydi! Meğerse bilgisayar uykuya geçince işletim sistemi tüm prosesleri donduruyormuş. Schedule'ın timer'ı da, threading'i de, her şeyi askıya alınıyor. Uyandığında kaldığı yerden devam etmiyor, o anki schedule planına göre devam ediyor. Yani 6 saatte 20 kere çalışması gereken işlem, sadece 1 kere çalışmış oluyor. Veri kaybı resmen.

🔍 Çözüm Arayışı ve İlk Çırpınışlar

İlk aklıma gelen, "acaba schedule'ın run_pending() döngüsünü bir thread'e alsam?" oldu. Denedim, olmadı. İşletim sistemi uykuya geçince thread de duruyor.
Python:
import schedule
import time
from threading import Thread

def job():
    print("Çalışıyor...")

schedule.every(10).minutes.do(job)

def run_scheduler():
    while True:
        schedule.run_pending()
        time.sleep(1)

Thread(target=run_scheduler).start()
# Uyku modu bu kodu da ezer geçer!

StackOverflow'da bile direk çözüm bulamadım. Meğerse sorun, bu işin kullanıcı seviyesindeki bir kütüphaneyle değil, işletim sisteminin gerçek zamanlı servisleriyle (cron daemon gibi) yapılması gerektiğiymiş.

💡 Gerçek Çözüm: Doğru Aracı Seçmek

Eğer script'inizin bilgisayar kapalı/uykuda olsa bile çalışmaya devam etmesini istiyorsanız, schedule veya benzeri kütüphaneler YEREL GELİŞTİRME ve TEST için. Canlıya alacaksanız:
- Windows için: Görev Zamanlayıcı (Task Scheduler)
- Linux/macOS için: Gerçek cron ya da systemd timers

Ben Linux'ta çalıştığım için, script'in başına shebang ekleyip çalıştırma izni verdikten sonra, crontab -e diyerek aşağıdaki gibi ekledim:
Bash:
/10     /home/bingunluk/venv/bin/python /home/bingunluk/scripts/benim_muhtesem_scriptim.py

Böylece işletim sisteminin kendi zamanlayıcısı, bilgisayar uyandığında "aa, uyku sırasında kaçırdığın şu işleri yapman lazım" diyerek (eğer ayarlanırsa) telafi edebiliyor veya en azından uyku sırasında durmuyor.

Sonuç? Bazen en sevdiğimiz basit Python kütüphaneleri, problemi çözmek için doğru araç olmayabiliyor. "Python'la her şey olur" demek kadar tehlikeli bir şey yok. Siz de böyle "meğerse kütüphane değil, sistem servisi kullanmam gerekiyormuş" diye yandığınız oldu mu? Windows'ta Görev Zamanlayıcı ile ilgili tüyoları olan var mı?
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri