最近、DjangoプロジェクトとWebFactionのメモリ使用量に問題が発生しました。
webfactionでこのプロジェクトのメモリ内で実行されている2つのプロセスは次のとおりです。
30396 4-20:20:00 13486
30404 4-20:20:00 13487
ビューが実行された後、プロセスの1つが大幅に増加します。
69720 4-20:20:22 13486
30404 4-20:20:22 13487
ご覧のとおり、最初のプロセスではメモリ使用量が2倍以上になりました。この関数は頻繁に使用されるため、何が起こっているのかを把握する必要があります。次のビューに絞り込んだと思います(画像のアップロード、詳細の追加、サムネイルのトリミングは3ステップのプロセスです)。
これが下のビューです。写真オブジェクトを取得し、ファイルから画像をロードし、ユーザーが送信したボックス座標を取得して、200,200サイズの画像を作成します。この新しく作成された画像は、ファイル名に.thumbnailを付けてディスクに書き戻され、写真オブジェクトが保存されます。
@login_required
def upload3(request, photo_pk):
photo = get_object_or_404(Photo, pk=photo_pk, user=request.user)
if request.method == "POST":
form = upload3Form(request.POST)
if form.is_valid():
im = Image.open(photo.image.path)
try:
box =(form.cleaned_data['x1'],form.cleaned_data['y1'],form.cleaned_data['x2'],form.cleaned_data['y2'])
except:
box = ('0','0','1000','1000')
cropped = im.crop(box)
cropped.thumbnail((200,200),Image.ANTIALIAS)
result = os.path.splitext(photo.image.path)
cropped.save(result[0] + '.thumbnail' + result[1])
photo.status = 3
photo.save()
私が間違っているかもしれないことについてのどんな考えでも大いに感謝されるでしょう。
Update 1
:テストに使用される画像はすべてJpegで、サイズは約3600 x 2700で、画像あたり約2MBです。