Un scheduler en python

C'est toujours aussi déconcertant après avoir passé tant de temps à coder les fonctions les plus simple en C sur microcontrôleurs de voire avec quel simplicité des choses compliqué sont si simple a mettre en œuvre en python.

Voici un petit exemple d'utilisation de apscheduler, un module qui permet de programmer l’exécution d'une fonction, sans bloquer votre application.

Voici une simple reprise de l'exemple de la doc avec tous les paramètres nommées pour plus de clarté. En fonction des paramètres utilisés, les possibilités sont infinies(ou presque).


from datetime import datetime
import time
import os
from apscheduler.schedulers.background import BackgroundScheduler


def tick(value):
    print('Tick! The time is: ' + str(datetime.now()) + ' ' + value)


class Scheduler():

    def __init__(self):
        self.scheduler = BackgroundScheduler()


if __name__ == '__main__':

    scheduler = Scheduler()
    scheduler.scheduler.add_job(func=tick,
                                trigger='interval',
                                seconds=3,
                                args=('Job1',))

    scheduler.scheduler.add_job(func=tick,
                                trigger='interval',
                                weeks=0,
                                days=1,
                                hours=0,
                                minutes=0,
                                seconds=0,
                                start_date='2014-06-01 16:30:00',
                                end_date=None,
                                timezone=None)

    scheduler.scheduler.add_job(func=tick,
                                trigger='date',
                                run_date=datetime(2014, 7, 5, 0, 7, 5),
                                args=['job2'])

    scheduler.scheduler.add_job(func=tick,
                                trigger='date',
                                run_date='2009-11-06 16:30:05',
                                args=['job3'])

    scheduler.scheduler.start()

    print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))

    try:
        # This is here to simulate application activity (which keeps the main thread alive).
        while True:
            time.sleep(2)
    except (KeyboardInterrupt, SystemExit):
        scheduler.scheduler.shutdown()  # Not strictly necessary if daemonic mode is enabled but should be done if possible

Attention l'application doit absolument rester vivante d’où le while True à la fin

Commentaires

Posts les plus consultés de ce blog

Utiliser l'api sms de free en python3