Cette commande de terminal redémarre mon application heroku :
heroku restart
Existe-t-il un moyen d'exécuter un script qui lancera cette commande et redémarrera mon application toutes les heures ?
Cette commande de terminal redémarre mon application heroku :
heroku restart
Existe-t-il un moyen d'exécuter un script qui lancera cette commande et redémarrera mon application toutes les heures ?
J'ai résolu ce problème avec une commande curl très simple script au sein du repo qui est déclenchée à l'aide de la commande planificateur Heroku gratuit .
#!/bin/sh curl -X DELETE "https://api.heroku.com/apps/${HEROKU_APP_NAME}/dynos" \ --user "${HEROKU_CLI_USER}:${HEROKU_CLI_TOKEN}" \ -H "Content-Type: application/json" \ -H "Accept: application/vnd.heroku+json; version=3"
Ver https://gist.github.com/mattheworiordan/f052b7693aacd025f025537418fa5708 .
Nous avons donné à notre application un jeton de longue durée à utiliser pour s'authentifier auprès de l'API Heroku, et avons simplement inclus une requête curl dans notre code pour redémarrer l'application.
Créez un jeton d'API à long terme :
$ heroku authorizations:create --description="Long-lived token for app restarts"
Creating OAuth Authorization... done
Client: <none>
ID: abcdabcd-abcd-4bcd-abcd-abcdabcdabcd
Description: Long-lived token for app restarts
Scope: global
Token: 12341234-1234-4234-1234-123412341234
Updated at: Tue May 11 2021 09:16:38 GMT-0400 (Eastern Daylight Time) (less than a minute ago)
Notez le Token
. Nous l'avons stocké dans l'ENV via heroku config, avec le nom de l'application :
$ heroku config:set HEROKU_API_TOKEN=12341234-1234-4234-1234-123412341234 HEROKU_APP_NAME=not-really-an-app
Dans notre code, nous avons la méthode suivante pour redémarrer l'application via l'API de Heroku, en utilisant cet appel API :
def restart!
# Using puts to log output, replace with your logging system if needed
puts `curl -v -s -n -X DELETE https://api.heroku.com/apps/#{ENV["HEROKU_APP_NAME"]}/dynos -H "Content-Type: application/json" -H "Accept: application/vnd.heroku+json; version=3" -H "Authorization: Bearer #{ENV["HEROKU_API_TOKEN"]}"`
end
Enfin, comme vous êtes intéressé par des redémarrages automatiques toutes les heures, l'option restart!
ci-dessus peut être programmée en utilisant Le planificateur de Heroku , rufus-scheduler en tant que Travail de Sidekiq ou autre.
Note : Heroku a certaines limites/logiques de temporisation autour des redémarrages d'applications, principalement centrées sur les crashs de dyno. Lecture de les docs peut vous aider à définir votre stratégie de redémarrage de l'application.
Je viens d'essayer et il n'y a pas eu de redémarrage sur le dyno. Le journal Heroku pour le planificateur suggère que la commande a échoué. Il n'y a pas de binaire "heroku" sur les dynos. Vous pouvez l'essayer en faisant heroku run bash
dans un terminal et ensuite essayer d'exécuter des commandes heroku. Peut-être avez-vous un buildpack spécial, ou êtes-vous sur une pile spéciale ? Je suis sur cedar-14.
Désolé pour la réponse tardive. J'ai quelques applications sur Heroku (toutes sur cedar-14), certaines sont en Ruby et d'autres en Go. Je viens de tester heroku ps:restart --app APPNAME
sur mon dyno Ruby avec Heroku Scheduler et ça a marché. J'ai aussi essayé heroku run bash
sur ce banc d'essai et a été en mesure d'exécuter heroku
les commandes qu'il contient. Je n'utilise pas de buildpacks spéciaux, juste la configuration par défaut pour les applications Rails. J'ai cependant essayé de faire la même chose avec une application Go, et le résultat est le suivant heroku
n'était pas disponible. Elle doit donc être incluse dans le buildpack Ruby (et peut-être d'autres) mais pas dans tous.
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.
0 votes
J'ai besoin de la même chose. Ma raison est que je mets à jour les traductions I18n sur cron, et que je dois redémarrer l'application pour vider le cache I18n.
0 votes
@Oded vous devriez choisir une réponse, s'il vous plaît, afin que les gens ne continuent pas à voir ceci dans leurs flux de "sans réponse". Merci !