асинхронный открыватель URL в Python - PullRequest
0 голосов
/ 13 декабря 2011

Я хочу открыть большой файл из Интернета и хотел бы начать его обработку до полной загрузки.Я хотел бы что-то вроде urllib2, но с другим потоком, который загружает файл в фоновом режиме.У него будет тот же интерфейс, что и у файла: если я прочитаю больше загруженных байтов, основной поток заблокирует его, и, если байты уже есть, чтение немедленно вернется.Когда все будет загружено, дополнительный поток загрузчика умрет.Когда все прочитано, EOF сработает.

Есть ли какой-нибудь встроенный модуль, который делает это?

1 Ответ

0 голосов
/ 13 декабря 2011

Я посмотрел на это: http://mail.python.org/pipermail/python-bugs-list/2007-April/038250.html и это: https://stackoverflow.com/a/1517728/498782

и придумал для вас буферизованный ридер:

url_resource = urllib2.urlopen(url)
CHUNK = 8 * 1024
while True:
    chunk_data = url_resource.read(CHUNK)
    if not chunk_data:
        break
    process(chunk_data)

Но имейте в виду, что вышеупомянутое содержит блокирующие вызовы. Для асинхронной работы вы можете посмотреть на это:

http://docs.python.org/library/asyncore.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...