3

Twitterフィードを取得してデータストアに保存するために、このcronジョブを作成しています。すべてを試しましたが、cronジョブが機能していません。次の記事/チュートリアルといくつかのstackoverflowの質問を読みましたが、これを解決することはできません。

https://developers.google.com/appengine/docs/python/config/cron

http://cloudartisan.com/posts/2010-06-02-scheduled-tasks-with-google-app-engine-python/

これが私のコードです

これはcron.ymalです

cron:
- description : capture twitter feed 
  url : /twittertask
  schedule: every 1 minutes
  target: version-2

これは私が仕事をするために必要なクラスです。

import webapp2
from google.appengine.ext import db

class Twitt(db.Model):
    created_at = db.IntegerProperty(required = True)
    id = db.StringProperty(required = True)
    text = db.StringProperty(required = True)

class TwitterTask(webapp2.RequestHandler):

    def get(self):
        url = "https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=BeijingAir&count=10"

        json_string = urllib2.urlopen(url).read()

        data = json.loads(json_string)

        for item in data:
            created_at_item = item['created_at']
            text_item = item['text']
            id_item = item['id']

            e = Twitt(id = created_at_item, text = text_item, id = id_item)
            e.put()

        self.response.out.write('Hello prueba!')

これはapp.ymalです

application: cronjob
version: 1
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /.*
  script: index.app

- url: /twittertask
  script: twittertask.app

これはindex.pyです

import webapp2

class MainPage(webapp2.RequestHandler):
  def get(self):
      self.response.headers['Content-Type'] = 'text/plain'
      self.response.write('Hello, Check Admin')

app = webapp2.WSGIApplication([('/', MainPage)],
                              debug=True)

def main():

    run_wsgi_app(application)

if __name__ == "__main__":
    main()

さて、どこにエラーがあるのか​​わかりません。開発サーバーでテストしました。GoogleAppEngineにアップロードしませんでした。

4

2 に答える 2

4

問題はapp.yamlにあります。URLは上から下に一致しますが、最初のハンドラーはすべてのURLに一致します。twittertaskエントリを移動して、最初に。の下に配置しhandlersます。

于 2012-09-06T10:40:35.293 に答える
1

Cronはローカル開発サーバーでは機能しません。クラウドにアップロードすれば動作します。

ローカルでappserverにアクセスします。

http://127.0.0.1:8080/_ah/admin

「cronジョブ」をクリックします。

http://127.0.0.1:8080/_ah/admin/cron

そして、「本番環境では、これはこれらの時間に実行されます」と表示されます。

ここにあなたのスケジュール。

于 2012-09-06T10:17:16.937 に答える