Wpis z mikrobloga

Pytanie do doświadczonych developerów Pythona: czego najlepiej użyć żeby zrobić taki 'event loop' ?

Powiedzmy że mam sobie aplikację , coś jak scheduler. User w bazie danych definiuje sobie: od 10:30 do 10:33 załącz A, od 11:45 do 12:30 załącz B itd. itd.

Takich aplikacji opartych na 'ramach czasowych' mam około 3-4 i każda musi chodzić non stop sprawdzając czy czegoś nie ma do wykonania. Dlatego zastanawia mnie jak to najlepiej rozwiązać?

Dać po prostu:

def main():
    print ascii
    while True:
        if get_data():
            do_your_job()
        else:
            sleep(2)

czy kombinować z Tornado/Geventem?

#python #programowanie
  • 17
@LOLWTF: to już było w cronie, używałem też APSchedulera. Oba nie zdały egzaminu bo przy niektórych załączeniach liczą się sekundy i muszę mieć coś co będzie w stanie co do sekundy mi odpalić event.
liczą się sekundy i muszę mieć coś co będzie w stanie co do sekundy mi odpalić event.


@Dyzajash: to nie robisz takich rzeczy w Pythonie, prosta sprawa.
@Dyzajash: ja bym zaryzkowal Quartz + Jave - jesli te sekundy sa takie malo precyzyjne potrzebne. Jak jednak nie - to pewnie jakies magie w strone realtime systems..
@legolass: godziny eventów cały czas się zmieniają w bazie. kiedyś próbowałem zaciągnąć do tego celery niestety bezskutecznie. przy stałych taskach było okej, ale jak miała wykonać 10-15 tasków w ciągu 2-3 sekund to po prostu nie wyrabiało. Przeszedłem wtedy na APS_tornado ale to mi też przestaje się sprawdzać i chcę jednak odpalać każdy program samoczynnie.
@Dyzajash: jaki miałeś problem z APschedulerem i sekundami z ciekawości? Bo działało bez problemów.

W ogóle jeśli możesz przerobić te aplikacje to może na jakieś kolejki przerobić w redisie czy celery.