Je m'interroge sur le statut du serveur Heroku et je ne trouve aucune documentation à ce sujet.
Exemple :
Process exited with status 143
Quelqu'un peut-il expliquer cet exemple ? Et où puis-je trouver des ressources pour une référence future ?
Je m'interroge sur le statut du serveur Heroku et je ne trouve aucune documentation à ce sujet.
Exemple :
Process exited with status 143
Quelqu'un peut-il expliquer cet exemple ? Et où puis-je trouver des ressources pour une référence future ?
Aucune des réponses n'aborde ce sujet. Il s'agit certainement pas Il est bon d'obtenir "le processus s'est terminé avec le statut 143". C'est un signe que votre application ne fait pas les choses correctement.
Regarde ça page de la documentation de Heroku, en particulier les sections sur redémarrage de y arrêt .
Fondamentalement, il y a un certain nombre de raisons pour lesquelles votre dyno peut être redémarré. Heroku redémarre automatiquement votre dyno toutes les 24 heures (les redémarrages et déploiements manuels réinitialisent cette période de 24 heures), mais il peut également redémarrer votre dyno pour d'autres raisons.
Il est important de comprendre qu'il peut être résilié à tout moment, et que votre application doit être conçue dans cet esprit. Par exemple, supposons que vous ayez un processus travailleur qui travaille sur une file d'attente, en extrayant des éléments de la file et en les traitant. Ne serait-il pas désagréable d'extraire les éléments mais que l'application se termine et que vous ne puissiez pas effectuer le travail ? Ou bien avez-vous des lignes de code pour lesquelles il serait dommage que l'application s'arrête au milieu de leur exécution ?
Heroku ne se contente pas de couper le cordon d'alimentation de votre application ; il envoie un signal SIGTERM. Heroku indique également (dans le lien ci-dessus) que c'est une mauvaise idée d'ignorer ce signal. Si vous obtenez "process exited with status 143", cela signifie que vous n'écoutez pas ce signal (pour python en tout cas).
Si vous ne faites rien dans votre code pour écouter ce signal, vous jouez un jeu dangereux (sauf si votre application peut être interrompue à tout moment de son exécution).
Dans le cas d'une application python, si vous n'exploitez pas le signal SIGTERM, votre application est immédiatement interrompue (dès que Heroku envoie ce signal) et vous obtenez un message "process exited with status 143". Ce n'est pas bon.
Cependant, si vous exploitez ce signal, votre application dispose de 30 secondes pour se fermer gracieusement avant d'être interrompue, ce qui est amplement suffisant pour terminer le travail en cours. En gros, arrêtez de faire du nouveau travail, et terminez ce que vous êtes en train de faire si vous savez que cela prendra <30s, ou remettez le travail non terminé dans une file d'attente, et ensuite sortez, ou interrompez la boucle dans laquelle vous étiez. Vous devriez obtenir "process exited with status 0". C'est une bonne chose.
De plus, si vous avez capté le signal mais que vous n'êtes pas sorti dans les 30 secondes, vous obtenez un message "Error R12 (Exit timeout) -> At least one process failed to exit within 30 seconds of SIGTERM", et l'application est terminée avec SIGKILL. Vous obtenez un "process exited with status 137". Ce n'est pas bon non plus.
Dans le lien ci-dessus (dans la section arrêt ), ils donnent un exemple en ruby de la manière d'exploiter ce signal. Et aquí est un exemple en python.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.