Есть ли способ ограничить скорость соединения в Python Twisted? Мне нужно смоделировать медленный dataline, с тайм-аутами и, возможно, потерей данных и использовать скрученную инфраструктуру.
Считаете ли вы использование витых маркеров токена?
http://en.wikipedia.org/wiki/Token_bucket http://twistedmatrix.com/documents/current/api/twisted.protocols.htb.html
этот пост предлагает три решения и обсуждает два возможных варианта: лучший из них - использовать iptables
(или другое, в равной степени мощное и гибкое программное обеспечение брандмауэра, конечно), если ваша ОС поддерживает такое программное обеспечение (т.е. ограничивает скорость передачи данных за пределами скрученной); если ваша ОС не имеет такой мощности в вашем распоряжении, менее предпочтительное, но работоспособное решение, упомянутое там,
1) Создайте словарь {ip1: count1, ip2: count2,.} на сервере и проверьте подсчеты для каждого входящего соединения. Отключите связь transport.loseConnection(), если порог для ip: count превышены. Reset этот словарь для пустой dict {} каждую минуту с реактором .callLater таймер.
ограничение которого объясняется в сообщении как
Подход(1) будет принимать accept() соединение и затем опустите его, давая хозяину на другом конце syn/ack, за которой следует закрытое соединение, а затем оно будет вероятно, попытайтесь снова подключиться немедленно.