2015-11-05 56 views
1

我有一個CRON作業,每天從S3存儲桶導入20個新文件到GS存儲桶。在Google應用引擎中並行化了延期任務嗎?

這裏是我的代碼:

import webapp2 
import yaml 
from google.appengine.ext import deferred 


class CronTask(webapp2.RequestHandler): 

    def get(self): 
     with open('/my/config/file') as file: 
      config_dict = yaml.load(file_config_file) 
     for file_to_load in config_dict: 
      deferred.defer(my_import_function, file_to_load) 


app = webapp2.WSGIApplication([ 
    ('/', CronTask) 
], debug=True) 

我的問題:這是裝載工作通過deferred.defer功能排隊過程中自動並行化,否則,我paralelize它自己?

如果我們在第二種情況下,我可以使用什麼技術來有效地並行處理這個加載過程?

回答

1

這取決於你的模塊的scaling settings和隊列的processing settings,但默認情況下任務將以某種並行性執行。

+0

你能給我一些配置的例子嗎? – sweeeeeet

+2

Greg發佈的任務隊列鏈接有'max_concurrent_requests'附近的例子。只要你的'deferred.defer'指向'queue_name'中'max_concurrent_requests'> 0(或省略)'queue.yaml',那麼你會沒事的。 –

+0

讓我們假設我發送給我的隊列的任務每個要完成2個小時。由於推送隊列中的任務需要10分鐘才能完成,因此可能不是一個好的解決方案。對於如此長時間的治療來說,這是一個很好的做法,爲了以平行的方式對待他們,但是沒有時間限制,這樣他們就有時間完成了。 – sweeeeeet