Как отсортировать ответы при использовании многопоточности?
Доброго времени суток.
В большом файле построчно расположены запросы к некому API сервису. Необходимо брать из файла эти запросы, выполнять вызов API и складывать ответы в один файл, причем порядок сохраненных ответов должен соответствовать порядку запросов (если запрос находится в седьмой строке, то и ответ на него должен быть в новом файле в седьмой строке). При последовательном выполнении получается довольно долго. При распараллеливании на несколько потоков с использованием очереди получается, что из-за неравномерности времени ответа сервиса, ответ на 7-ой запрос может быть получен позже чем на 8-й и в результирующем файле будет несоответствие. Формировать из ответов список или словарь для последующей сортировки не вариант, т.к. исходный файл может содержать до миллиона запросов. Подскажите алгоритм действий в данном случае.
Да, была такая мысль. Неохота еще и базу приплетать плюс все равно придется селект с сортировкой делать всего миллиона записей и чем это лучше списка или словаря в данном случае? А результатом должен быть csv файл.
Но получается, чтобы выгрузить отсортированную таблицу в текстовый файл из БД нужно сделать что-то типа select * from table_name order by id и весь миллион записей окажется в памяти?
Беру порциями запросы из файла, формирую из них очередь, пробегаю очередь в несколько потоков, формирую лист из ответов, сортирую и выгружаю в файл. С базой было бы проще, но решили, что не очень целесообразно поднимать её там где скрипт крутится.