1

cron タスクを使用して動的バックエンドを開始しようとしていますが、デプロイ後、cron タブの下に新しい cron タスクが表示されず、バックエンド タブの下にバックエンドのインスタンスも表示されません。私は何を間違っていますか?

編集: これで、cron ジョブが適切に実行されます (スケジュールを「1 分ごと」に変更した後。ただし、バックエンドは実行を拒否します。cron タブon time Failedには、app.yaml などでハンドラーを定義する必要があるかもしれません)。

EDIT2: appcfg を使用してバックエンド リストを更新すると、バックエンド タブで定義したバックエンドが表示されます。あとは、それが機能するかどうかを確認するだけです (ブラウザーを使用してバックエンドに get 要求を行う方法を知っている人はいますか? 実行されているかどうかを確認するためだけに 1 時間も待ちたくありません (cron タスクが実行されます)現在毎時)。

私のコード

私の cron.yaml ファイル:

cron:
- description: crawler backend activation
  url: /crawl
  target: crawler
  schedule: every minute

私の backends.yaml ファイル:

backends:
- name: crawler
  class: B1
  instances: 1
  start: crawler.application
  options: dynamic

私のバックエンドハンドラーcrawl.py:

import logging
import webapp2 as webapp

class Handler(webapp.RequestHandler):
    logging.debug('crawler started')



application = webapp.WSGIApplication([('/crawl', Handler)])
4

3 に答える 3

2

このcron形式を使用してみてください:

schedule: every 1 minutes

注:動的バックエンドを毎分呼び出すと、シャットダウンの遅延が 15 分であるため、シャットダウンすることはありません。この場合、常駐バックエンドを使用することをお勧めします。

于 2012-05-21T22:32:46.973 に答える
1

コードにいくつか問題があります。まず、スタートアップハンドラーはと呼ばれcrawl.pyますが、backends.yamlはを参照しcrawler.pyます。次に、で指定されたスタートアップハンドラーはbackends.yaml、開始リクエストのハンドラーファイルのみを指定します。cronによって作成されたものなど、他のすべてのリクエストは通過app.yamlし、通常のリクエストのようにハンドラーにルーティングされます。

于 2012-05-22T07:00:12.580 に答える
1

私が見逃していたもう1つのこと-通常のデプロイコマンドはバックエンドを更新しないようです。そのため、これを行うには新しいバッチファイルが必要でした:

echo <password> | python "C:\Program Files (x86)\Google\google_appengine\appcfg.py" --email=<myemail> backends <app src folder path> update
于 2012-05-22T07:47:42.193 に答える