Поэтому мне нужно сделать около 300+ вызовов API, и я не хочу передавать их все сразу и загружать сервер. Итак, я подумал о том, чтобы, возможно, выполнять около 5 асинхронных вызовов за раз. Из того, что я прочитал, здесь очереди операций звучат потрясающе и очень полезны. Из ответа на этот вопрос асинхронный пример создает очередь операций и передает ее в вызов. Я предполагаю, что если бы я сделал что-то подобное, я мог бы просто создать 5 отдельных очередей и направить свои звонки в эти 5 очередей (я предполагаю, что на самом деле не пробовал это, так как я хотел бы использовать Alamofire). Возможно ли что-то подобное с Alamofire?
Можно ли с помощью Alamofire создать несколько отдельных очередей операций (или чего-то подобного)?
Ответы (1)
Сетевые запросы автоматически управляются базовой системой загрузки URL-адресов, поэтому Alamofire должен иметь возможность обрабатывать все, что вы на нее бросаете. Есть способы запланировать запросы Alamofire в очереди, но в этом нет необходимости. Всегда лучше попытаться измерить результаты, чем строить предположения.
person
mattt
schedule
02.10.2014
Итак, вы говорите, что если я попытаюсь сделать 300, это произойдет примерно в то же время, что и базовая система загрузки URL-адресов, чтобы убедиться, что она не затопляет сервер?
- person boidkan; 02.10.2014
Система загрузки URL может гарантировать только то, что клиент не откусит больше, чем он может проглотить. Что касается сервера, 300 - это не очень большое количество одновременных запросов для обработки.
- person mattt; 02.10.2014
Да, наверное, я не объяснил. Таким образом, это 300+ на устройство, а не всего 300+ (и на самом деле теперь я думаю, что с моим текущим кодом это ближе к 600). Так что с большим количеством устройств и сервером, который не может обрабатывать большой трафик, в моем случае это было бы проблемой. Я не особо беспокоюсь о стороне клиента.
- person boidkan; 02.10.2014
Нет, я понял это. Если ваш сервер действительно неспособен обрабатывать реальную нагрузку, я бы порекомендовал вам потратить время на рефакторинг, чтобы объединить и уменьшить количество сделанных вызовов.
- person mattt; 03.10.2014