Python'da periyodik çalışan fonksiyon

Merhaba,
Youtube’dan video detaylarını çeken fonksiyonun yeni eklenecek videoları çekebilmesi için belli aralıklarla çalışmasını istiyorum, bunun için ne önerirsiniz, nasıl bir yöntem kullanılabilir(mesela haftada veya 24 saate bir şeklinde)
Şöyle bir kod buldum aslında, bunun daha uygun bir yolu var mıdır?

from time import sleep
from threading import Thread

def get_something():
    print("..some details..")

def repeat_again(what, time):
    while True:
        what()
        sleep(time)

if __name__ == '__main__':
    do_it = Thread(target=repeat_again, args=(get_something, 86400))
    # 86400 second == 24 hours
    do_it.start()

schedule veya celery modullerine baka bilirsiniz:



1 Beğeni

Celery çok kapsamlı projeler için uygun diye düşünüyordum, küçük çaplı projelere de uygulanabilir mi.

Teşekkürler

Uygulanabilir elbette, fakat tek makinada calisan “scriptler” icin gereksiz karmasiklik olabilir.

Oldurulmeyecek bir script icin while True: yap(); time.sleep(86400) yeter, ornekteki gibi ek thread acmaya gerek olmamasi lazim.

Oldurulur, degistirilir, vs. diyorsan yillarin cron'u var, periyodik calistirmada akla gelen ilk isim.

“Sadece ayakta tutsun, periyodu ben hallederim” diyorsan systemd unit’i veya benim ufak projelerde cok sevdigim supervisord kullanabilirsin. Fakat 24 saat gecmeden olup ayaga kalktigi durumlar icin bir yerlere son calisma zamanini yazman gerekir.

3 Beğeni

Systemd ve/veya supervisord alternatifi bir program windows için mevcut mu?

Teşekkürler arkadaşlar, tüm önerileri inceleyip proje için uygun olanı kullanacağım.

Selamlar

Kesin vardir. Kim, ne icin kullanir dusunemiyorum ama kesin biri yazmistir.