ソース¶
cron.yaml¶
1 2 3 4 5 | cron:
- description: Morning Greeting
url: /cron/morning_greeting
schedule: every day 7:00
timezone: Asia/Tokyo
|
app.yaml¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | project: your-project-id # 各自のプロジェクトIDを指定
version: 1
runtime: python27
api_version: 1
threadsafe: yes
# ルーティング
handlers:
# task queue
- url: /task/messaging
script: worker.app
login: admin
# cron
- url: /cron/.*
script: cron.app
login: admin
# 上記以外はmain.pyに向けます
- url: .*
script: main.app # main.pyではない
# 使用ライブラリの指定
libraries:
# Webフレームワークのwebapp2を使用する
- name: webapp2
version: "2.5.2"
|
cron.py¶
26行目に自分のLINEのuseridを入力します。
ユーザIDはLINEから /callback
にリクエストがきたときのログに出ています
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #!/usr/bin/env python
# coding: utf-8
import config
import datetime
import json
import logging
import webapp2
from google.appengine.api import urlfetch
ENDPOINT = 'https://api.line.me/v2/bot/message/push'
class MorningGreetingHandler(webapp2.RequestHandler):
def get(self):
try:
# +9時間で日本時間に合わせる
now = datetime.datetime.now() + datetime.timedelta(hours=9)
headers = {'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer {}'.format(config.CHANNEL_ACCESS_TOKEN)}
message = u'おはようございます{}時です'.format(now.strftime('%H:%M'))
payload = {'to': '', # 自分のuseridをいれる
'messages': [{'type': 'text',
'text': message}]}
r = urlfetch.fetch(ENDPOINT, method=urlfetch.POST,
payload=json.dumps(payload),
headers=headers)
logging.debug(r.status_code)
logging.debug(r.content)
except Exception, e:
logging.error('Failed Morning Message')
logging.error(e.message)
app = webapp2.WSGIApplication([
('/cron/morning_greeting', MorningGreetingHandler),
], debug=True)
|
ちなみに
デプロイするとcronの設定が 管理コンソール の[App Engine] > [タスクキュー] > [cronジョブ]から確認できます。