Поэтому у меня есть некоторый код, который функционирует что-то вроде этого общего кода:google app engine - Асинхронные блоки кода? питон
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().
"
, кажется, относятся только к DATASTORE запросов.
Предложения?
многопоточности и/или асинхронных операций только поможет, когда ваши ожидания на какой-либо другой сервис, который занимает много времени. Если все ориентировано на вычисления, вы ничего не выиграете. Одним из подходов может быть разбиение каждой операции «take_for_ever» на отдельные дискретные вызовы для инфраструктуры приложений. Пусть передняя часть сделает запросы, и вы можете ударить по нескольким экземплярам. –
@ Тит, да, я попробовал потоки, и это связано с тем, что другой сервис занимает время, противоположное вычислениям (но не службе движка приложения). Сейчас angularjs делает сообщение ajax на моем сервере, которое содержит код, который занимает некоторое время. Однако вчера вечером я подумал, что могу попытаться использовать службу очереди с помощью angularjs и поместить две функции на двух разных обработчиках, чтобы обе функции возвращались с результатами, когда они были закончены, вместо ожидания на другом. –