本当に簡単な質問
./manage.py runserver
localhost:8000
ファイルのアップロードをシミュレートし、ajax アップロードのルック アンド フィールに取り組むことができるように、開発マシンの速度を落とすことはできますか?
シミュレートしたい場所に応じて、単に寝ることができますか?
from time import sleep
sleep(500)
ipfw
osx または freebds では、特定のポートの帯域幅を制限するために使用できます。
sudo ipfw pipe 1 config bw 1Bytes/s delay 100ms
sudo ipfw add 1 pipe 1 src-port 8000
不要になったら忘れずに削除してください。
sudo ipfw delete 1
osx には、これを可能にする無料のアプリもあります。
カスタマイズされたアップロードハンドラーまたは現在のアップロードハンドラーをサブクラス化して、主にその中のメソッドを遅くすることができますreceive_data_chunk()
。または、内部にpdbブレークポイントを設定しreceive_data_chunk()
、手動でアップロードを続行します。または、もっと簡単に、大きなファイルをアップロードしてみてください。
私は Charles HTTP Proxy の大ファンです。接続を調整し、あらゆる種類のネットワーク条件をシミュレートできます。
django-gubbins の低速ファイル アップロード ハンドラを使用します。
import time
from django.core.files.uploadhandler import FileUploadHandler
class SlowFileUploadHandler(FileUploadHandler):
"""
This is an implementation of the Django file upload handler which will
sleep between processing chunks in order to simulate a slow upload. This
is intended for development when creating features such as an AJAXy
file upload progress bar, as uploading to a local process is often too
quick.
"""
def receive_data_chunk(self, raw_data, start):
time.sleep(2)
return raw_data
def file_complete(self, file_size):
return None
以下に追加することで、これをグローバルに有効にすることができます。
FILE_UPLOAD_HANDLERS = (
"myapp.files.SlowFileUploadHandler",
"django.core.files.uploadhandler.MemoryFileUploadHandler",
"django.core.files.uploadhandler.TemporaryFileUploadHandler",
)
または、特定のリクエストに対して有効にします。
request.upload_handlers.insert(0, SlowFileUploadHandler())
https://docs.djangoproject.com/en/dev/topics/http/file-uploads/#id1に記載されているように、リクエストが CSRF チェックから除外されていることを確認してください。
すべてのリクエストで速度を落としたい場合、非常に簡単な方法は ngrok https://ngrok.com/を使用することです。リクエストに ngrok URL を使用してから、別の国の VPN に接続します。これにより、リクエストが非常に遅くなります。