J'exécute un script python sur EC2 qui envoie la date de sortie du dessin animé par e-mail chaque semaine. Cependant, la période gratuite d'aws est passée et cela coûte beaucoup d'argent.
J'ai donc essayé de passer à heroku, qui semble être gratuit. Je vais résumer ce que j'ai essayé.
###préparation de l'environnement heroku(prémisse de centos)
##Installer la ceinture à outils Heroku
$ sudo wget -qO- https://toolbelt.heroku.com/install.sh | sh
$ sudo ln -s /usr/local/heroku/bin/heroku /usr/local/bin/heroku
##confirmation de l'exécution de la commande heroku
$ heroku version
heroku-toolbelt/3.32.0 (x86_64-linux) ruby/2.0.0
You have no installed plugins.
##Authentification
$ heroku login
Enter your Heroku credentials.
Email: [email protected]
Password (typing will be hidden):
Authentication successful.
###Préparation de l'APP
$ cd myAPP
#Installation de la bibliothèque avec pip
#Écrivez le code comme vi
#Tester
$ git init
$ git add .
$ git commit -m "my first commit"
###Déployer sur heroku
##Enregistrement APP
$ heroku create
#Je ne pense pas qu'heroku crée mon APP soit simple ici
#Sinon, le nom de l'application sera correctement donné sur heroku
##Spécifiez les modules requis
$ pip freeze > requirements.txt
$ git add requirements.txt
$ git commit requirements.txt
##Déployer
$ git push heroku master
##Afficher le journal
$ heroku logs -t
Par ici, j'ai parcouru les étapes de démarrage répertoriées dans heroku et je l'ai découvert. Je n'aime pas les centos, mais quand je trace l'installation de toolbelt à partir du fichier officiel, seul le type debian est écrit, donc je peux le saisir de manière autonome.
référence: Getting Started with Python on Heroku | Heroku Dev Center [vagrant 1.5] Comment utiliser Heroku de CentOS 6.5 sur Vagrant. --Qiita
#Réglez chaque
$ heroku config:set SENDGRID_USER_ID="hogehoge"
$ heroku config:set SENDGRID_PASS="fugafuga"
$ heroku config:set TO_ADDRESS="[email protected]"
$ heroku config:set FROM_ADDRESS="[email protected]"
#Vérification
$ heroku config
=== hogehoge Config Vars
FROM_ADDRESS: [email protected]
SENDGRID_PASS: fugafuga
SENDGRID_USER_ID: hogehoge
TO_ADDRESS: [email protected]
Par exemple
sample.py
import os
print os.environ["SENDGRID_USER_ID"]
Ensuite, vous pouvez définir la variable d'environnement pour chaque application. Cela peut également être défini à partir de l'écran Web heroku. (Dans ce cas, vous pouvez vous y référer immédiatement depuis le local)
Heroku est déployé via git, mais si git.heroku.com est publié ou connexion github, le code sera publié, je souhaite donc masquer l'adresse e-mail et le chemin.
Donc, si vous définissez la variable d'environnement associée à l'application depuis cli ou web, elle sera masquée, alors je l'ai essayé.
J'ai senti qu'il y avait une méthode plus appropriée, mais une fois que la ceinture à outils heroku est incluse, le test local ne semble pas poser de problème, alors c'est tout.
Mettez sendgrid avec pip et suivez presque le tutoriel.
Cependant, c'est comme suit avec quelques modifications pour utiliser les variables d'environnement ci-dessus.
sg_test.py
import sendgrid
import os
sg = sendgrid.SendGridClient(os.environ["SENDGRID_USER_ID"], os.environ["SENDGRID_PASS"])
message = sendgrid.Mail()
message.add_to(os.environ["TO_ADDRESS"])
message.set_from(os.environ["FROM_ADDRESS"])
message.set_subject("Sending with SendGrid is Fun")
message.set_html("and easy to do anywhere, even with Python")
sg.send(message)
Si vous regardez ce tutoriel officiel heroku, vous trouverez api_key et api_user. C'est comme avoir à émettre un jeton API. Cependant, c'était déroutant car l'id et le mot de passe du compte utilisés lors de la connexion à sendgrid étaient corrects.
De plus, il a fallu quelques jours pour créer un compte pour sendgrid, donc j'ai dû me préparer à l'avance pour le faire.
référence: sendgrid/sendgrid-python Python - SendGrid Documentation | SendGrid
Après avoir déployé et vérifié l'opération sur heroku,
$ heroku run python sg_test.py
Ajoutez un module complémentaire pour le planificateur heroku.
$ heroku addons:add scheduler:standard
Ensuite, vous pouvez le vérifier à partir de l'écran de l'application de heroku, donc
Entrez les paramètres de type cron à partir de l'écran de gestion des modules complémentaires
Après cela, regardez simplement le journal etc. pour vérifier l'opération.
À propos, je faisais diverses choses lors de l'installation du planificateur heroku, et le planificateur de processus a également été enregistré. Il semble que vous puissiez modifier l'ensemble de ressources de Heroku sur une base horaire en une semaine pour la gestion des ressources. Puisqu'il y a une interface graphique de calendrier, j'aimerais pouvoir faire ce paramètre collectivement avec le planificateur heroku ...
référence: Heroku Scheduler | Add-ons | Heroku Heroku Scheduler | Heroku Dev Center Comment utiliser le planificateur heroku (Rails, sinatra) --Qiita
J'ai pu mettre en œuvre le sujet ... mais je ne pouvais pas faire ce que je voulais faire car je voulais envoyer des e-mails par lots sur une base hebdomadaire ... (Je l'ai remarqué en chemin, mais je voulais jouer avec ou toucher légèrement heroku)
L'ordonnanceur Heroku ne pouvait être réglé que toutes les 10 minutes, toutes les heures, tous les jours ... Je me demandais si cela pouvait être résolu en ajoutant une telle logique du côté APP. De plus, dans certains cas, il y a des paas, et si vous n'y accédez pas pendant une heure, le processus dormira et vous devrez piquer régulièrement avec curl, donc ce sera stérile ...
Après tout, je pensais qu'il était plus facile de créer une VM pour 500 yens par mois et par océan numérique que de s'en tenir gratuitement. Après tout, paas m'a fait réaliser que les tests locaux / à distance et les problèmes d'exécution sont difficiles.
Y a-t-il des paas pour le batch ou spécialisés pour l'exécution cron? Peut-être y en a-t-il, mais je ne pense pas pouvoir le trouver.
Au fait, il semble y avoir un paas? Cela fait un conteneur de docker et le met sur le Web alternative Dokku, donc j'ai senti que mon souhait pouvait être exaucé là-bas. .. Mais est-ce déjà des paas? Et c'est une histoire sur la fabrication de paas par vous-même. .. Référence: PaaS basé sur Docker, facile à utiliser comme Heroku | KRAY Inc
c'est tout.