32-разрядная python 2.7.10, 16 ГБ ОЗУ в системе. Использование python request
.
Получение MemoryError при попытке загрузить файлы размером менее 4 ГБ (самый большой - около 700 000 КБ) с помощью почтового запроса.
def upload_item(username,url_key,in_package,tpk_id,layer_name,extent,token,cert):
"""
Upload the input TPK, this is using a post request
through the requests module, returns a response of success or failure of
the uploaded TPK. This can then be used to update the tiles
in the tile service
"""
try:
#update Item URL
update_url = 'https://{}.maps.arcgis.com/sharing/rest/content/users/{}/items/{}/update'.format(url_key,username,tpk_id)
#opens Tile Package
files_up = {"file": open(in_package, 'rb')}
data = {'f':'json',
'token':token,
'name':layer_name,
'title': layer_name,
'itemId':tpk_id,
'filetype': 'Tile Package',
'overwrite': 'true', # existing item, overwrite is set to true
'async':'true',
'extent':extent}
response = requests.post(update_url, data=data, files=files_up, verify = cert).json()
print response
return response
except:
line, filename, synerror = trace()
raise FunctionError(
{
"function": "upload_package",
"line": line,
"filename": filename,
"synerror": synerror
}
)
- это действительно 700 000 КБ, слишком много для 32-битного python обрабатывать? Или я ошибаюсь по этому вопросу? Где-то есть кеш, который мне нужно очистить, который может хранить старый запрос? (Я собрал кучу во время тестирования)
Наименьший размер, который мне удалось загрузить в этом запросе, составил около 130 000 КБ, поэтому код работает.
Предполагая, что это происходит из-за 32-битного процесса, я мог бы потенциально перейти на 64-битную версию, единственная причина, которой у меня нет, это то, что моя работа в ближайшее время выполняет обновление среды, и они не хотят никаких изменений на серверах для время; поэтому я пытаюсь избежать этого, если это возможно.