2010-05-29 53 views
1

我在玩Goole App Engine任務隊列API以瞭解如何使用它。但我無法讓它在本地觸發。當我上傳到Google服務器時,我的應用程序就像一種魅力。但它不會在本地觸發。我從管理員那裏看到的是任務列表。但是,當他們的ETA來臨時,他們只是通過它。這就像他們運行,但他們失敗並等待重試。但是我不能在命令行上看到這些事件。任務隊列停止工作

當我嘗試點擊「運行」管理面板上,它successfuly運行,我可以看到在命令行這些請求。我使用google-app-engine-django在Linux上使用App Engine SDK 1.3.4。我試圖從3個小時內找到問題,但找不到它。調試GAE應用程序也很困難。因爲調試消息不出現在控制檯屏幕上。

謝謝。

回答

1

開發服務器不會自動運行任務,您必須自行設置它們。 這是一個設計功能,所以你可以看到當你運行它們時會發生什麼,而不是在任何時候運行它們。

本質上講,有什麼不對您的應用程序,這是開發服務器的功能。

+0

我不知道,謝謝。奇怪的是,它沒有記錄。 – pocoa 2010-05-29 16:54:11

+0

從1.3.4開始,dev服務器自動運行任務。這是一項新功能。 – geoffspear 2010-05-29 20:43:40

+0

我不知道它沒有記錄的事實。但是,我猜想對文檔錯誤有很高的容忍度,因爲如果有人抱怨,他們會感到有必要改進自己的文檔。由於我沒有這種壓力,我傾向於抱怨。 – H2ONaCl 2011-03-20 07:37:15

0

本地devserver不支持現在的隊列。在本地開發中使用模塊的技巧是不使用不同的域名,而是在不同的(動態)端口上部署到本地主機。將任務發送到隊列時需要執行的操作是添加隊列正在監聽的主機以及隊列URL。這是一個Java示例(對不起)。 Python有一個類似的方法:

ModulesService moduleService = ModulesServiceFactory.getModulesService(); 
    String hostNameToQuery = moduleService.getVersionHostname("worker_module_name", null); 
    logger.info("hostNameToQuery=" + hostNameToQuery); 
    TaskOptions options = TaskOptions.Builder 
      .withUrl("/workerQueueURL") 
      .header("Host", hostNameToQuery) 
      .param("taskKey", taskKeyString) 
      .retryOptions(RetryOptions.Builder.withTaskRetryLimit(0)); 

讓我知道這是否適合你。