2012-05-31 6 views
3

«Почему данные, которые я отправляю с помощью transport.write, занимают много времени, чтобы добраться до другой стороны соединения?»Twisted irc python bot - буферизующие сообщения

Скрученный может отправлять данные только после того, как вы откажетесь от контроля выполнения в реактор. Например, если у вас бесконечный цикл записи данных на транспорт, данные никогда не будут отправлены, поскольку управление никогда не покинет ваш код и не вернется в реактор ».

Я нашел это в скрученных FAQ, это точно так же, как моя проблема. Есть ли способ исправить это, чтобы я мог отправлять сообщения мгновенно и не дожидаться завершения цикла?

+0

На самом деле нет простого способа сбросить исходящие витые буферы, вы должны просто сохранить свет выполнения. –

+0

Но мне это нужно для моего бота. Мне нужно написать 10 строк (1 строка за 2 сек) с помощью команды. Это невозможно сделать, поскольку скрученные просто записывают все строки за секунду и получают избыток наводнения. – Bubo

+0

Просто напишите 5 строк сразу с '\ n' –

ответ

4

Нет. Вы не можете отправлять сообщения мгновенно. Управление должно возвращаться к циклу событий. , проблема, которую вы действительно пытаетесь решить (вывод из комментариев по вопросу), скорость, ограничивающая отправленные вами сообщения, не требует возможности этого. Вместо этого прекратите использование time.sleep в цикле и начните использовать reactor.callLater для задержкивыполнение кода. Или используйте функции IRC API, которые делают это для вас (что вы, кажется, уже обнаружили, lineRate).

Смежные вопросы