Как я могу оптимизировать время отклика в этом коде на python? (django)
Метод get_assets получает список активов из базы данных и для каждого элемента списка вызывает метод __build_asset_response для построения ответа в формате словаря. Однако, когда активов много, время выполнения build_asset_response очень велико. Кто-нибудь знает метод, позволяющий оптимизировать это время?
def get_assets(user, data):
if data.get('asset_id'):
assets = Asset.objects.filter(pk__in=data['asset_id'])
return [__build_asset_response(asset) for asset in assets]
assets = Asset.objects.filter(QueryHelper.filter_by_rol(user))
return [__build_asset_response(asset) for asset in assets]
Это частный метод buil_asset_response:
def __build_asset_response(asset):
asset_dict = {
'id': asset.pk,
'name': asset.name,
'accessibility': manage_accessibility.build_accessibility_type_response(asset.accessibility),
'folder': "",
'user_id': {
'id': asset.user.id,
'name': str(asset.user)
},
'organization': {
'id': asset.idOrganization.id,
'name': str(asset.idOrganization),
},
'asset_type_id': asset.idAssetType and __build_asset_type_response(asset.idAssetType) or {},
'file': settings.MEDIA_URL + asset.archivo.name,
'tag_ids': [tag.name for tag in asset.tag_ids.all()],
'lastModified': timezone.localtime(asset.last_modified_date).strftime("%Y-%m-%d %H:%M:%S"),
'used_in_publication': asset.used_in_publication
}
if asset.idFolder:
folder = manage_folder.build_folder_response(asset.idFolder)
else:
folder = ''
asset_dict.update({
'folder': folder,
})
return asset_dict