Найти - Пользователи
Полная версия: читать из бесконечного потока
Начало » Python для новичков » читать из бесконечного потока
1 2
habrman
есть скрипт пхп, который отдает данные в бесконечном потоке
как правильно их считывать?
счас сделал так
uri = 'путь к скрипту'
r = urlopen(uri)
while True:
text += r.read(1).decode(r.headers.get_content_charset())

habrman
up
будут идеи?
JOHN_16
с таким описанием видимо ни у кого нет, кроме как бесконечный пото считать нельзя потому что он бесконечный. Но это скорее что то из философии
habrman
пока данные есть- мы их считываем, когда данных нет -тогда ждем
а как сетевые программы работают? происходит соединение, затем пришли данные- их обработали, и дальше waiting
JOHN_16
Тогда объясните что значит “правильно считывать”, какие у вас конкретные вопросы или проблемы?
habrman
конкретный вопрос в первом сообщении
FishHook
habrman
конкретный вопрос в первом сообщении
Что в нем конкретного то?
Ваш код не работает? Вы не написали. Какие ошибки, если не работает?
Ваш код работает? Что вас тогда не устраивает?
Вы конктетизируйте как-нибудь суть топика.
habrman
код работает но мне не нравится, что постоянно идет попытка чтения 1 байта, даже когда нет данных
может есть возможность читать только когда приходят данные?
например подписаться на событие прихода данных
doza_and
habrman
что постоянно идет попытка чтения 1 байта
Налицо непонимание как это работает. При вызове r.read(1) питон перестает работать. Операционная система передает ему управление как только получает данные по сети. Вовсе не обязательно читать по 1 байту можете и больше куски сделать.

py.user.next
habrman
есть скрипт пхп, который отдает данные в бесконечном потоке
как правильно их считывать?
счас сделал так
  
uri = 'путь к скрипту'
        r = urlopen(uri)
        while True:
            text += r.read(1).decode(r.headers.get_content_charset())
Протокол HTTP так не работает. urlopen() - это функция для работы по HTTP-протоколу. Есть запрос, есть ответ, всё это ограничено размером данных.
Если же у тебя бесконечные данные, то нужно и другое соединение открыть. Использовать для это модуль socket, для отслеживания активности на дескрипторах есть модуль select.

https://docs.python.org/3/library/socket.html
https://docs.python.org/3/library/select.html

Потренируйся для начала, почитай что-нибудь. Эта тема не простая, нужно многое знать. Нужно знать, что там происходит внутри соединений, чтобы ошибок не делать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB