Параллельная выборка файлов

Для загрузки файлов я создаю объект urlopib (класс urllib2) и читаю его в кусках.

Я хотел бы подключиться к серверу несколько раз и загрузить файл в шесть разных сеансов. При этом скорость загрузки должна быть быстрее. У многих менеджеров загрузки есть эта функция.

Я подумал о том, чтобы указать часть файла, который я хотел бы загрузить в каждом сеансе, и как-то обрабатывать все сеансы в одно и то же время. Я не уверен, как я могу это достичь.

Ответы

Ответ 1

Похоже, вы хотите использовать один из вариантов HTTP Range, которые доступны.

изменить Обновлена ​​ссылка, чтобы указать на w3.org сохраненный RFC

Ответ 2

Что касается запуска параллельных запросов, вы можете использовать urllib3 или requests.

Мне понадобилось время, чтобы составить список похожих вопросов:

Поиск [python] +download +concurrent дает следующие интересные:

Поиск [python] +http +concurrent дает следующие значения:

Ищите [python] +urllib2 +slow:

Поиск [python] +download +many:

Ответ 3

Как мы уже говорили, я сделал такой, используя PycURL.

Единственное, что мне нужно было сделать, это pycurl_instance.setopt(pycurl_instance.NOSIGNAL, 1), чтобы предотвратить сбои.

Я использовал APScheduler для запуска запросов в отдельных потоках. Благодаря вашим советам об изменении ожидания занятости while True: pass до while True: time.sleep(3) в основном потоке код ведет себя довольно хорошо, и использование модуля Runner из приложения пакета python-daemon почти готово к использованию в качестве типичного демона UN * X.