ほんとうに頭が悪く、短期記憶が4ミリ秒しかありません。
汎用性のない記事を石版に彫ります。
スケジューラはscheduleを使います。
herokuユーザ登録、heroku toolbeltのインストールは省略。
scheduleライブラリ入れよ。
$ pip install schedule
Googleアカウントのパスワードでログインしようとすると弾かれます。
怪しい自作アプリでもsmtpサーバを使わせてもらうため、Googleアカウントの設定からアプリパスワードというものを取得してきて下さい。
FROM_ADDRESS
には自分のアドレスを、MY_PASSWORD
にはアプリパスワードを設定します。
main.py
import smtplib
import schedule
import time
from email.mime.text import MIMEText
from email.utils import formatdate
# ================================================================
FROM_ADDRESS = 'MAIL'
MY_PASSWORD = 'PWD'
TO_ADDRESS = 'TO'
BCC = 'BCC'
SUBJECT = '件名'
BODY = '本文'
# ================================================================
def create_message(from_addr, to_addr, bcc_addrs, subject, body):
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = from_addr
msg['To'] = to_addr
msg['Bcc'] = bcc_addrs
msg['Date'] = formatdate()
return msg
def send(from_addr, to_addrs, my_pwd, msg):
smtpobj = smtplib.SMTP('smtp.gmail.com', 587) # gmail
smtpobj.ehlo()
smtpobj.starttls()
smtpobj.ehlo()
smtpobj.login(from_addr, my_pwd)
smtpobj.sendmail(from_addr, to_addrs, msg.as_string())
smtpobj.close()
def job(): # 実行したい処理。
msg = create_message(FROM_ADDRESS, TO_ADDRESS, BCC, SUBJECT, BODY)
send(FROM_ADDRESS, TO_ADDRESS, MY_PASSWORD, msg)
print('SENT=========>')
# コンフィグ。お昼の12時に一日一回送信。
# cronより覚えやすい。clockworkみたいだね。
schedule.every().day.at('12:00').do(job)
# 本体。コンフィグを読み出して実行してくださる。
while True:
schedule.run_pending()
time.sleep(1)
git init
はheroku create
より先に打っておくと自動でherokuがリモートリポジトリに登録される。
$ cd <APP_CURRENT_DIRECTORY>
git init
heroku login
heroku create
herokuに必要なファイルをいくつか作っておく。
$ pip freeze > requirements.txt
copy nul Procfile
copy nul runtime.txt
Procfileのtypeはworkerになる。
djangoみたいにwebだと起動しないね。~~調べないと。~~調べた。
web dyno
HTTPのリクエスト・レスポンスの処理。ユーザーからのリクエストは全部webが行うそう。
worker dyno
バックグラウンド処理。web dyno以外、APIsからのデータ取得やRSSフィード利用だそう。
そのあとは起動コマンド。
Procfile
worker: python main.py
runtime.txt
python-3.7.2
デプロイします。
$ git add --all
git status
git commit -m "Firstslap"
git status
git push heroku master
とりあえずこれで動くかな。エラったらすいません。
定期的に起こさないと寝ちゃうかも。止まってますね。何か対策しないと。