2017-04-07 2 views
0

Je suis en train d'écrire une application pour Raspberry Pi. App doit exécuter des tâches périodiques et également connecté au serveur principal sur socket.io pour obtenir des commandes du serveur. Je préfère APscheduler pour exécuter des tâches périodiques car il permet de contrôler dynamiquement les intervalles de tâches. J'ai utilisé socketIO_client pour obtenir des instructions cron du serveur et les appliquer sur les tâches en cours d'exécution. Jusqu'à ce point, cela fonctionne comme un charme. Pourtant, j'ai besoin de plus de fonctionnalités. Entre les exécutions périodiques de tâche, je veux exécuter des tâches par des événements serveur socket.io. Sur ce site, j'ai trouvé un problème similaire sur this question et réponse appliquée. Normalement, APscheduler est assez intelligent pour ne pas exécuter la tâche avant la fin de la tâche précédente en définissant coalesce True et/ou max_instances 1. Mais avec la méthode job.func(), le travail démarre même si le précédent n'est pas encore terminé.APScheduler utilisant des déclencheurs cron et instantanés ensemble

Fondamentalement ce que je veux est exécuter une fonction périodiquement et être également capable de courir entre les intervalles par des événements de serveur. Si le travail a démarré, l'événement cron ou le serveur, jusqu'à ce qu'il termine son nouvel emploi, doit être passé. Y'a-t'il un quelconque moyen d'y arriver?

Répondre

0

Désolé, ce n'est actuellement pas possible en mode natif avec APScheduler. Vous devrez créer deux emplois et partager un objet de verrouillage ou quelque chose parmi eux qui s'assurera qu'ils ne s'exécutent pas simultanément.

+0

Merci pour la réponse – CarnageTR