ネットワークが遅い場合は、特定の(Python)アプリケーションが正しく機能していることをテストする必要があります。私のローカルコンピュータでこれをシミュレートする方法はありますか?理想的には、管理者にシステムの変更を要求することなく、単一のアプリケーションに対してこれを行うことができます。たとえば、パケット損失プロキシサーバーがあります。
答え1
横にtrickle
、制限「速度」のリアルタイム状態を提供する利点もあるハッキング可能な方法です。つながるそしてコスト削減を共有させてくださいつながる独立したアプリケーション間:
ssh -D 1080 -N -o ProxyCommand='
pv -B8K -trabcN OUT -L2K |
socat - tcp:%h:%p,rcvbuf=8K |
pv -B8K -trabcN IN -L30K' localhost
pv
制限速度()によって遅くなるプロキシコマンドは、制限付きSOCKS5サーバーを起動します。-L
ここで、出力と入力は異なる速度で制限されます。
次に、コマンドを靴下にします。tsocks
たとえば、設定は次のようになります~/.tsocks.conf
。
server = 127.0.0.1
server_port = 1080
server_type = 5
以下の方法で一部のISOイメージをダウンロードしてくださいtsocks
。
$ wget -O /dev/null http://releases.ubuntu.com/18.10/ubuntu-18.10-live-server-amd64.iso
/dev/null 2%[ ] 19.60M 1.99MB/s eta 6m 47s
同じ靴下:
$ tsocks wget -O /dev/null http://releases.ubuntu.com/18.10/ubuntu-18.10-live-server-amd64.iso
/dev/null 0%[ ] 802.40K 29.3KB/s eta 3h 21m
一方、pv
出力は次のようになります。
OUT: 3.65KiB 0:00:32 [0.00 B/s] [ 116 B/s]
IN: 960KiB 0:00:32 [30.5KiB/s] [30.0KiB/s]
(現在の速度(-r
)と平均速度(-a
)を表示します。)
tsocks
$LD_PRELOAD
または、ネットワーク機能を奪ってSOCKSサーバーを通過するように実行可能ファイルにコードを挿入する他のソックスコマンドです。これは、静的リンクまたはsetuid / setgidコマンドには適用されません。
また、tsocks
TCP専用です。私はsshのSOCKSサーバーもTCPだけを実行していると思うので、ソックスファイアなどの他のサーバーに切り替えても、dante
この方法でUDPトラフィックを制限することはできません。 danteのSOCKSサーバーを使用して、同様のアプローチを考案できますssh
。
編集する。 python3の場合、python3用のネットワークを転送することも管理することもできないことを発見しました(testを使用trickle
)。しかし、うまくいくようです。これを使用するには、次のように作成します。tsocks
youtube-dl
dante
socksify
~/.dante.conf
route {
from: 0.0.0.0/0 to: 0.0.0.0/0 via: 127.0.0.1 port = 1080
}
アプリケーションを呼び出します。
SOCKS_CONF=~/.dante.conf socksify youtube-dl https://...