У меня странная проблема с загрузкой файлов из Google Storage Buckets.
Если я работаю в Linux и запускаю этот код, для загрузки PDF-файла размером 64 КБ требуется 5 минут.
def generate_document(request):
if not ensure_valid_user(request):
return redirect('/?result=0')
try:
long_name = request.GET['long_name']
short_name = request.GET['short_name']
file_data, size = CloudStorageManager.get_file(long_name)
response = HttpResponse(file_data, content_type='application/octet-stream')
response['Content-Disposition'] = 'attachment; filename={}'.format(short_name)
response['Content-Length'] = size
return response
except Exception as ex:
print(ex)
Вот метод из CloudStorageManager
класса, который важен:
class CloudStorageManager:
# private key file, used for local testing
storage_client = storage.Client.from_service_account_json(
'CloudStorageAPIKey.json')
bucket = storage_client.get_bucket("my.private.bucket")
@staticmethod
def get_file(long_name):
bucket = CloudStorageManager.bucket
blob = bucket.blob(long_name)
file_string = blob.download_as_string()
return file_string, blob.size
Что я потерял, так это то, что с Linux, если я закомментирую response['Content-Length'] = size
из моего generate_document()
метода загрузкипроисходит с нормальной скоростью, однако, когда я иду домой и вхожу в Windows с этой строкой комментария, загрузка занимает 5 минут снова и работает с включенной строкой.
Может кто-нибудь помочь объяснить, где я иду не так?