Comment puis-je demander à mon serveur web (Webfaction) d'exécuter un fichier Python et de le laisser tourner indéfiniment ? Quelqu'un m'a dit que je devrais utiliser cron
mais je n'ai pas trouvé de bon matériel sur la façon de l'exécuter une fois, et qu'il ne s'arrête pas.
Réponses
Trop de publicités?Le moyen le plus simple est d'utiliser quelque chose comme nohup pour faire du processus un démon :
http://www.cyberciti.biz/tips/nohup-execute-commands-after-you-exit-from-a-Shell-prompt.html
Cron fonctionne périodiquement pour toujours. Les tâches Cron peuvent être exécutées à la minute, à l'heure, quotidiennement, hebdomadairement ou mensuellement. Voici une référence complète :
http://unixgeeks.org/security/newbie/unix/cron-1.html
Voici une référence rapide :
L'exécution à l'écran est parfaite pour les tests, mais à un moment donné, elle s'arrêtera pour une raison ou une autre (WebFaction aime tuer les processus lorsque vous utilisez trop de mémoire) et vous devrez alors la redémarrer automatiquement.
Supervisord ( http://supervisord.org/ ) est assez bon pour exécuter des choses et les redémarrer si elles échouent pour une raison quelconque. Il gère également les processus de "démonisation", c'est ainsi que cela s'appelle lorsque vous détachez un processus du terminal actuel afin qu'il continue à fonctionner après que vous ayez terminé votre saison (lorsque vous vous déconnectez de SSH), il est possible d'écrire du code dans votre script Python pour faire cela vous-même mais pourquoi s'embêter quand il y a des outils géniaux comme Supervisord ?
Bien sûr, il y a toujours la possibilité que Supervisord meure (ou soit tué). C'est là que vous pouvez utiliser Cron. Cron vous permet d'exécuter quelque chose périodiquement. Une propriété intéressante de la façon dont Supervisord est généralement configuré est que si vous essayez de le démarrer alors qu'il est déjà en cours d'exécution, il ne démarrera pas une seconde fois. Ainsi, si vous configurez une tâche Cron pour démarrer Supervisord toutes les 5 minutes, tout devrait bien se passer.
- Réponses précédentes
- Plus de réponses