Странное поведение с методом recv() в Python

Я работаю над сетевой программой на Python. Это работает хорошо, но я не понимаю почему.
Вот часть моего основного цикла:

while self.continue :
        message = ""
        try :
            message = self.connexion.recv(1024).decode("utf-8")
        except :
            pass

Что меня беспокоит, так это то, что инструкция recv(1024) должна возвращать ограниченное количество символов (максимум 1024, я думаю).
Но она всегда возвращает все сообщение, даже если его длина превышает 1024.

Кто-нибудь может сказать мне, почему?


person vayune    schedule 10.05.2017    source источник
comment
Может это из-за этой петли? Это похоже на foreach с data.pop (я действительно не уверен в этом, но звучит правдоподобно).   -  person Sylogista    schedule 10.05.2017
comment
Некоторые проблемы могут помешать хорошим ответам на ваш вопрос. Цикл сбивает с толку. Мы не видим, как управляется переменная continue. try-pass также скрывает любые потенциальные ошибки. Вы перезаписываете переменную message в каждой итерации цикла. connexion, мы предполагаем, что это объект сокета. Utf8 не выглядит допустимым, вероятно, должно быть utf-8. Очень сложно найти проблему с этим фрагментом кода, попробуйте создать меньший пример с меньшим количеством факторов. Документация recv противоречит тому, что вы говорите, поэтому все эти другие факторы могут скрывать проблему.   -  person slezica    schedule 10.05.2017
comment
Я думаю, что этот пост, вероятно, будет вам полезен: stackoverflow.com/questions/7174927/   -  person user54    schedule 10.05.2017
comment
На самом деле невозможно иметь атрибут self.continue, потому что continue — это ключевое слово.   -  person user2357112 supports Monica    schedule 10.05.2017