2011-08-30 42 views
5

Tôi đã chỉ định một công việc cron (để kiểm tra trong quá trình phát triển) nhưng dường như nó không chạy. Làm thế nào để đảm bảo công việc sẽ hoạt động trong sản xuất?Công việc Cron không chạy (trong dev)

cron.yaml:

cron: 
- description: cron test gathering 
    url: /test/cron 
    schedule: every 2 minutes from 09:00 to 23:00 

app.yaml:

application: cron_test 
version: 1 
runtime: python 
api_version: 1 

handlers: 
- url: /.* 
    script: main.py 

main.py:

url_map = [ ('/test/cron', test.CronHandler), 
      ('/error', err.Err404Handler)] 

application = webapp.WSGIApplication(url_map, debug=False) 

def main(): 
    wsgiref.handlers.CGIHandler().run(application) 

if __name__ == "__main__": 
    main() 

FeedCron được định nghĩa là:

class CronHandler(webapp.RequestHandler): 

    def get(self):  
     logging.info("NOTE: CronHandler get request"); 
     return None 

Tôi đã mong đợi để xem dòng, "LƯU Ý: CronHandler nhận được yêu cầu", trong nhật ký của công cụ ứng dụng. Tôi đang sử dụng ứng dụng GoogleAppEngineLauncher (phiên bản: 1.5.3.1187) để bắt đầu & dừng ứng dụng.

Trả lời

3

D'Oh! Chỉ cần nhìn thấy chữ in nhỏ trong tài liệu SDK:

Khi sử dụng Python SDK, dev_appserver có một giao diện quản trị cho phép bạn xem công việc cron tại/_ah/admin/cron.

Máy chủ phát triển không tự động chạy công việc cron của bạn. Bạn có thể sử dụng cron của máy tính để bàn cục bộ hoặc giao diện tác vụ theo lịch biểu để kích hoạt URL của công việc của bạn bằng công cụ curl hoặc một công cụ tương tự.

+0

Vậy bạn đã kích hoạt công việc Cron từ Localehost như thế nào? –

2

Ba năm sau mọi thứ đã được cải thiện.

Thứ nhất, các tuyến đường đến Cron Jobs là: http://localhost:8000/cron

Các máy chủ phát triển (vẫn) không tự động chạy các công việc cron của bạn. Tuy nhiên, bằng cách sử dụng liên kết ở trên bạn có thể làm hai việc:

  1. Nhấp vào nút "Chạy ngay bây giờ", mà thực sự gây nên các URL
  2. Xem lịch trình, mà phải đảm bảo với bạn khi công việc (hurrah!) sẽ được chạy trong sản xuất
0

Tôi đang tìm cách mô phỏng công việc cron trên máy chủ dev cục bộ. Là một giải pháp tạm thời, tôi đang chạy cục bộ một tập lệnh python truy cập vào url cron và kích hoạt nhiệm vụ lịch biểu.

import urllib2 
import time 
while True: 
    print urllib2.urlopen("http://localhost:9080/cron/jobs/") 
    time.sleep(60) 

Trong trường hợp của tôi, url là http://localhost:9080/cron/jobs/ và tôi chạy nó mỗi phút. Hy vọng điều đó có thể hữu ích.

Các vấn đề liên quan