Google app engineのpythonで、月に1回だけ動かす方法。
何分ごと、毎日何時、毎週何曜と何曜の何時、毎日何時から何時の間に何分ごと
これらはわかったけども、月に1回だけがわからなかった。
結局、月に1回は以下でOK
15 of month 05:00
これだと、毎月15日の5時に動かすとなる。管理画面でチェックすると、CRONの起動予定の日時が表示されるので、ここで正しいか確認できる。
Google app engineのpythonで、月に1回だけ動かす方法。
何分ごと、毎日何時、毎週何曜と何曜の何時、毎日何時から何時の間に何分ごと
これらはわかったけども、月に1回だけがわからなかった。
結局、月に1回は以下でOK
15 of month 05:00
これだと、毎月15日の5時に動かすとなる。管理画面でチェックすると、CRONの起動予定の日時が表示されるので、ここで正しいか確認できる。
以前もデプロイに失敗して以下のようなエラーが出たことがある。
Error 409: — begin server output —
Another transaction by user (ユーザー名) is already in progress for app: (アプリ名), version: 1. That user can undo the transaction with “appcfg rollback”.
これはデプロイの途中で何かあってエラーが出たという意味らしく、元の状態に戻すためにはコマンドプロンプトからコマンドを打ち込む必要がある。
前回は、ネットで調べてすぐ解決したんだけど、今回はなぜか何度やっても解決しない。原因は、Google app engineを置いている場所と、アプリを置いているフォルダを別の場所においていたからっぽい。
結論を書くと以下のようにしたら解決した。
まず、google_appengineのフォルダ上にマウスポインタを置いて、SHIFTを押しながら右クリック
↓
すると開いたウィンドウ内に「コマンド ウィンドウをココで開く」があるのでクリック。
↓
すると、GAE(Google app engine python)までのパスがすでに表示された状態でコマンドプロンプトが開くので
「python appcfg.py rollback ここにアプリのパスを書く」をコピペしてエンターを押せばOK
アプリのパスは、アプリのフォルダ内を表示させている状態で、フォルダ上部にあるパンくずリスト上で右クリックしてアドレスをコピーで取得できる。
また次回エラーが出た時に時間を無駄にしないように半分自分のためにここにメモしておく。
Google App Engineを学習中(道半ば)でいくつかはまった部分があるのでメモ。
例えば、「サブドメイン部分.appspot.com/date/6」
というURLアドレスを作るとする。(appspot.comはGoogle App Engineに無料で用意してあるドメイン)
date/6の6の部分をwebappフレームワーク内で使う方法がわからなかった。(webappはGoogle App Engineに標準装備のフレームワーク)。
簡単に結論だけ(TAB部分はコピペできなかったので適当。)
class MainPage(webapp.RequestHandler):
def get(self,number=””):
このように書くと、変数の2個目にURLのdate/6の6の部分が来るので、それを変数のnumberに入れて使えるようになる。
この部分は想定外の物が入ってくることを考えないといけないので、その対策もする必要があります。
URLの設計部分も同時に変更する必要がある。
application = webapp.WSGIApplication(
[(‘/date/(.*)’, MainPage)],
debug=True)
ごちゃごちゃしてるけど、date/の後にある()の中にあるものが、上のnumberに入ることになる。
.*←は正規表現
yamlファイルの中の設定は例えば
– url: /date/.*
script: date.py
みたいな感じ。