2012-09-06 27 views
3

我創建這個cron作業來獲取Twitter的飼料,並存儲在數據存儲中。我嘗試了一切,但我的cronjob沒有工作。我閱讀以下文章/教程和一些stackoverflow問題,但我無法解決這個問題。Python的谷歌應用程序引擎的Cron工作/計劃任務不工作

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() 

好了,我找不到在哪裏是錯誤。我在我的開發服務器上測試過。我沒有上傳到谷歌應用程序引擎。

回答

1

Cron不能在本地dev服務器上工作。將其上傳到雲端,它會起作用。

訪問你的本地應用程序服務器:

http://127.0.0.1:8080/_ah/admin 

,並點擊 「Cron作業」。

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

而且它會說:「在生產,這將在這些時間運行:」這裏

您的日程安排。

+0

好的,謝謝。我將它上傳到谷歌應用程序引擎。現在我收到一個錯誤,名爲2012/09/06 10:28:15準時失敗 –

+1

讓它運行到下一個週期。我偶爾會遇到這種情況,那麼下次它就可以正常工作了。從來沒有想過要解決這個問題,但毫無疑問,日誌中會有一些東西。 –

+0

另一個在本地工作的定時刷新的快速解決方案是使用Opera瀏覽器並將其設置爲每N分鐘/秒刷新一次問題頁面。 –

4

問題出在你的app.yaml。網址自上而下匹配,但您的第一個處理程序匹配全部網址。移動twittertask條目,因此它首先在handlers之下。

+0

但即使我改變了在開發服務器,我得到404錯誤信息。 –

相關問題