Ich führe ein Python-Skript auf EC2 aus, das wöchentlich das Veröffentlichungsdatum des Cartoons per E-Mail sendet. Die freie Zeit von aws ist jedoch vorbei und kostet viel Geld.
Also habe ich versucht, nach Heroku zu ziehen, das frei zu sein scheint. Ich werde zusammenfassen, was ich versucht habe.
###Heroku-Umgebungsvorbereitung(Centos Prämisse)
##Installieren Sie den Heroku-Werkzeuggürtel
$ sudo wget -qO- https://toolbelt.heroku.com/install.sh | sh
$ sudo ln -s /usr/local/heroku/bin/heroku /usr/local/bin/heroku
##Bestätigung der Ausführung des Heroku-Befehls
$ heroku version
heroku-toolbelt/3.32.0 (x86_64-linux) ruby/2.0.0
You have no installed plugins.
##Authentifizierung
$ heroku login
Enter your Heroku credentials.
Email: [email protected]
Password (typing will be hidden):
Authentication successful.
###APP Vorbereitung
$ cd myAPP
#Bibliotheksinstallation mit pip
#
#
$ git init
$ git add .
$ git commit -m "my first commit"
###
##
$ heroku create
#
#
##Testen oder Bereitstellen der Heroku-APP-Registrierung Hier ist die Erstellung meiner APP durch Heroku nicht einfach. Andernfalls wird der APP-Name in Heroku ordnungsgemäß benannt. Geben Sie die erforderlichen Module an
$ pip freeze > requirements.txt
$ git add requirements.txt
$ git commit requirements.txt
##Bereitstellen
$ git push heroku master
##Protokoll anzeigen
$ heroku logs -t
Hier ging ich durch die in Heroku aufgelisteten Erste Schritte und fand es heraus. Ich mag keine Centos, aber wenn ich die Installation des Toolbelt vom Beamten aus verfolge, wird nur der Debian-Typ geschrieben, sodass ich ihn eigenständig eingeben kann.
Referenz: Getting Started with Python on Heroku | Heroku Dev Center [vagrant 1.5] Verwendung von Heroku aus CentOS 6.5 unter Vagrant. --Qiita
#Stellen Sie jeweils ein
$ 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]"
#Bestätigung
$ heroku config
=== hogehoge Config Vars
FROM_ADDRESS: [email protected]
SENDGRID_PASS: fugafuga
SENDGRID_USER_ID: hogehoge
TO_ADDRESS: [email protected]
Zum Beispiel
sample.py
import os
print os.environ["SENDGRID_USER_ID"]
Anschließend können Sie die Umgebungsvariable für jede APP festlegen. Dies kann auch über den Heroku-Webbildschirm eingestellt werden. (In diesem Fall können Sie sofort von lokal darauf verweisen)
Heroku wird über git bereitgestellt, aber wenn git.heroku.com oder eine Github-Verbindung veröffentlicht wird, wird der Code veröffentlicht, sodass ich die E-Mail-Adresse und den Pfad ausblenden möchte.
Wenn Sie also die der Anwendung zugeordnete Umgebungsvariable über cli oder web festlegen, wird sie ausgeblendet, also habe ich es versucht.
Ich hatte das Gefühl, dass es eine geeignetere Methode gibt, aber sobald der Heroku-Werkzeuggürtel enthalten ist, scheint der lokale Test kein Problem zu sein, also ist es das.
Setzen Sie sendgrid mit pip und folgen Sie fast dem Tutorial.
Bei einigen Änderungen ist es jedoch wie folgt, die oben genannten Umgebungsvariablen zu verwenden.
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)
Wenn Sie sich dieses offizielle Heroku-Tutorial ansehen, finden Sie api_key und api_user. Es ist, als müsste man einen API-Token ausstellen. Es war jedoch verwirrend, da die ID und der Pass des Kontos, das beim Anmelden bei sendgrid verwendet wurde, in Ordnung waren.
Außerdem dauerte es einige Tage, um ein Konto für sendgrid zu erstellen, sodass ich mich im Voraus vorbereiten musste, um es fertigzustellen.
Referenz: sendgrid/sendgrid-python Python - SendGrid Documentation | SendGrid
Nach dem Bereitstellen und Überprüfen des Vorgangs auf Heroku
$ heroku run python sg_test.py
Fügen Sie ein Add-On für den Heroku-Scheduler hinzu.
$ heroku addons:add scheduler:standard
Dann können Sie es auf dem APP-Bildschirm von Heroku überprüfen, also
Geben Sie cron-ähnliche Einstellungen über den Add-On-Verwaltungsbildschirm ein
Schauen Sie sich danach einfach das Protokoll usw. an, um den Vorgang zu überprüfen.
Übrigens habe ich während der Installation des Heroku-Schedulers verschiedene Dinge getan, und der Prozess-Scheduler wurde ebenfalls registriert. Es scheint, dass Sie den Ressourcensatz von Heroku in einer Woche stündlich für das Ressourcenmanagement ändern können. Da es eine Kalender-GUI gibt, wünschte ich, ich könnte diese Einstellung gemeinsam mit dem Heroku-Scheduler vornehmen ...
Referenz: Heroku Scheduler | Add-ons | Heroku Heroku Scheduler | Heroku Dev Center Verwendung des Heroku-Schedulers (Rails, Sinatra) - Qiita
Ich konnte das Thema implementieren ... aber ich konnte nicht tun, was ich wollte, weil ich wöchentlich stapelweise E-Mails senden wollte ... (Ich habe es unterwegs bemerkt, aber ich wollte damit spielen oder Heroku leicht berühren.)
Der Heroku-Scheduer konnte nur alle 10 Minuten, jede Stunde und jeden Tag eingestellt werden. Ich fragte mich, ob dies durch Hinzufügen einer solchen Logik auf der APP-Seite gelöst werden könnte. In einigen Fällen gibt es auch Paas, und wenn Sie eine Stunde lang nicht darauf zugreifen, wird der Prozess schlafen und Sie müssen regelmäßig mit Locken stochern, damit es unfruchtbar wird ...
Immerhin hatte ich das Gefühl, dass es einfacher ist, eine VM für 500 Yen pro Monat pro digitalem Ozean zu bauen, als sich kostenlos daran zu halten. Immerhin fiel es paas schwer, Probleme lokal / remote zu testen und auszuführen.
Gibt es Paas für Batch oder spezialisiert für Cron-Ausführung? Vielleicht gibt es das, aber ich glaube nicht, dass ich es finden kann.
Übrigens scheint es einen Paas zu geben? Das macht einen Docker-Container und stellt ihn ins Internet Dokku-Alternative, sodass ich das Gefühl hatte, dass mein Wunsch dort erfüllt werden könnte. .. Aber ist es schon Paas? Und dies ist eine Geschichte darüber, wie man Paas selbst macht. .. Referenz: Docker-basiertes PaaS, das wie Heroku | KRAY Inc einfach zu verwenden ist
das ist alles.