2012-12-18 57 views
4

我正在嘗試幾個GAE的功能。在Google App Engine上使用異步urlfetch啓動後端

我已經建立了一個動態後端,但我有幾個問題讓這件事的工作沒有任務隊列

後端代碼:

class StartHandler(webapp2.RequestHandler): 

    def get(self): 
    #... do stuff...  

if __name__ == '__main__': 
    _handlers = [(r'/_ah/start', StartHandler)] 
    run_wsgi_app(webapp2.WSGIApplication(_handlers)) 

後端是動態的。所以每當它接到一個電話時,它就是這樣,然後停下來。

url = backends.get_url('worker') + '/_ah/start' 
urlfetch.fetch(url) 

但我想這個電話是異步由於該後端可能需要最多10分鐘才能完成它的工作的理由:當我用我的處理程序內

一切worikng罰款。

所以我改變了上面的代碼:

url = backends.get_url('worker') + '/_ah/start' 
rpc = urlfetch.create_rpc() 
urlfetch.make_fetch_call(rpc, url) 

但隨後的後端不會啓動。我對完成請求或從中獲取任何數據不感興趣。

我在想什麼 - 實施錯誤?

感謝您對異步調用所有

回答

2

使用RPC沒有調用get_result()的RPC對象將不獲資助的網址抓取將被調用。一旦你的代碼退出,未完成的未決異步調用將被中止。

使處理程序異步的唯一方法是將代碼排入推送隊列。

+0

謝謝你的回覆和解釋。這非常精確。很少有人在這裏做。 –

相關問題