0

Google Task Queue Python API を使用して最初のコードを作成しました。アドレスバーに URL を入力するたびにメールが送信されるようになっています。ダッシュボードのタスク キューにタスクが表示されdefaultますが、開始してから 1 時間経っても実行されない理由がわかりません。

キュー-mail.py:-

class sendMail(webapp.RequestHandler):
    def post(self):
        mail.send_mail(
            'X@gmail.com',
        self.request.get('to'),
        self.request.get('subject'),
        self.request.get('body'))


taskqueue.add(url='/sendMail',params=dict(
    to='Y@hotmail.com',
subject = 'Testing task queues',
body = 'this is a message!'))

app.yaml:-

handlers:
 - url: /mail
   script: queue-mail.py

コードを次のように呼び出しました。appid.appspot.com/mail

4

3 に答える 3

3

webapp フレームワークの使用方法に関するドキュメントのセクションをお読みください。ハンドラー クラスを定義しましたが、WSGI アプリを定義していないか、スクリプトで呼び出していません。その結果、ハンドラー コードが実行されることはありません。

モジュール レベルでタスクをエンキューするコードを配置し、main()関数を定義していないため、リクエストがモジュールに送信されるたびにそのコードが実行されます。そのため、コードは同じタスクをエンキューするだけです。 、実際には何もせずに、何度も何度も。タスクを実行するコードからタスクをエンキューするコードを分離し、別の URL から呼び出す別のハンドラーにエンキュー コードを配置する必要があります。

于 2011-07-29T00:33:08.957 に答える
1

あなたの問題が解決したので、公式の回答を投稿したいと思いました。 postそれがタスクキューのデフォルトの方法であるため、機能しgetませんでした。function documentationを見ると、kwargs の 1 つはメソッドであり、get/post/etc を指定できますが、コードでは指定しなかったため、デフォルトで post になりました。補足として、欠落しているハンドラーの 404 はおそらく表示されませんでしたが、「メソッドが許可されていません」の 405 は表示されました (タスク キューがポスト関数を持たないハンドラーにポスト リクエストを送信しようとしたため)。定義)

于 2011-07-30T14:20:43.683 に答える