GAE + mapreduce雖然好用, 但是老要用它那個簡單的介面來觸發一個job. 不能自動化的每天自動起來做些統計的事, 感覺挺蠢的. 一直在找要怎麼加, 才能在cron.yaml裡觸發. 終於被我試出來了. 首先, 先指定一個url給特定的handler. 最簡單就是在app.yaml把所有link都導到main.py. app.yaml - url: .* script: main.py 然後在main.py裡加一段 def main(): application = webapp.WSGIApplication(... ('/tasks/summary', SummaryHandler)], debug=True) util.run_wsgi_app(application) 重點就是這個SummaryHandler. class SummaryHandler(webapp.RequestHandler): def get(self): name = 'count' handler_spec = 'main.process' reader_spec = 'mapreduce.input_readers.DatastoreInputReader' reader_parameters = {'entity_kind': 'main.Client'} start_map(name, handler_spec, reader_spec, reader_parameters) 當然啦, 前面要from mapreduce.control import start_map, 上面幾個變數, 就是在mapreduce.yaml裡的設定, 改成用程式來傳. 最 加一個cron.yaml, 內容是... cron: - description: daily summary job url: /tasks/summary schedule: every day 06:00