2016-04-25 60 views
1

當按照Google App Engine的指導配置我的任務時,我發現可以通過使用手動或基本縮放模塊來獲得一些tasks runs for more than 10 minutes(默認限制)並且轉到一小時。運行一小時的GAE任務?

我試着用這種方式配置它(使用下面的yaml配置),但是我的任務總是在10分鐘後,而不是1小時後死亡。

我做錯了什麼?

queue.yaml中:

queue: 
- name: long_process 
    max_concurrent_requests: 10 
    rate: 1/s 

... (other tasks) 

long_process_queue_module.yaml:

module: long-process-queue-module 
runtime: python27 
api_version: 1 
version: 1 
threadsafe: true 

instance_class: B1 
manual_scaling: 
    instances: 5 

handlers: 
- url: /_ah/queue/myhandler 
    script: wsgi.application 
    login: admin 

有什麼不對?我怎樣才能將持續時間設置爲1小時?

萬一它很重要,我還希望能夠一次運行多個任務。我目前設置instances: 5懷疑它會同時運行5個長進程,但也許我在這裏也是錯誤的?

+0

在基本或手動縮放實例中,任務可以運行多長時間沒有限制。如有必要,它可以運行幾天。一個實例可以關閉,但如果它保持不變,它可以無限期地繼續運行你的任務。 –

+0

這是真的嗎?我知道後臺線程有最大生命週期24小時,但不知道任務。 – marcadian

回答

3

您需要定義要在long-process-queue-module中運行的任務,您可以在queue.yaml中指定目標字段,也可以在排隊任務時指定目標字段。 https://cloud.google.com/appengine/docs/python/config/queue#target https://cloud.google.com/appengine/docs/python/taskqueue/tasks#task_target

+0

你能告訴我GAE如何處理多個併發進程嗎?是否有規則說「同時只運行X進程,並在以後排隊」?它是否是'max_concurrent_requests'?提前致謝。 –

+0

是的,你可以控制隊列參數中的'max_concurrent_requests'。 app.yaml中有另一個'max_concurrent_requests'來控制每個實例的線程數。 – marcadian

+0

我實現了你的答案,並且做到了這一點。我接受了你的答案。謝謝 –