所以我有一些代碼,其功能是這樣的通用代碼:谷歌應用程序引擎 - 異步代碼塊?蟒蛇
for blah in blahs:
blah.take_forever()
for blah2 in blah2s:
vars = blah2.take_forever()
for var in vars:
var.also_take_forever()
我想,像異步功能,如
async_start_blah2_loop_then_do_someting_else()
do_the_first_blah_loop()
gather_results_and_send_them_out()
不過,我沒有使用的數據存儲或東西這是一個urlfetch,那麼還有哪些其他選項可以加速這個過程?
「
map_async(callback, pass_batch_into_callback=None, merge_future=None, **q_options)
Asynchronously map a callback function or tasklet over the query results. This is the asynchronous version of map().
」
似乎只適用於數據存儲區查詢。
對此提出建議?
線程和/或異步操作只會在您等待其他需要時間的服務時起作用。如果它全部以計算爲導向,那麼你將不會獲得任何收益。一種方法可能是將每個「take_for_ever」操作分解爲對appengine基礎架構的單獨離散調用。讓前端發出請求,你可能會碰到多個實例 –
@Tim,是的,我嘗試了線程,這是由於另一種服務需要時間反對計算(但不是應用程序引擎服務)。現在,angularjs正在向我的服務器發送ajax信息,其中包含需要一段時間的代碼。然而,昨天晚上我想我可能會嘗試使用帶有angularjs的隊列服務,並將這兩個函數放在兩個不同的處理程序上,以便任一函數在結束時返回結果,而不是等待另一個函數。 –