- Файл НЕ ДОЛЖЕН быть записан на диск.
- Файл создается путем вызова API и записи ответа в формате JSON в файл.
- К API выполняется несколько вызовов. Невозможно получить весь результат за один вызов API.
- Я не могу сохранить в строковой переменной полный результат выполняя несколько необходимых вызовов и добавляя их в каждый вызов, пока весь файл не окажется в памяти. Файл может быть огромным, и существует ограничение на ресурсы памяти. Каждый фрагмент должен быть отправлен, а память освобождена.
Код: Выделить всё
def chunks_generator():
range_list = range(0, 4000, 100)
for i in range_list:
data_chunk = requests.get(url=someurl, url_parameters={'offset':i, 'limit':100})
yield str(data_chunk)
def upload_file():
chunks_generator = chunks_generator()
for chunk in chunks_generator:
data_chunk= chunk
chunk_io = io.BytesIO(data_chunk)
ftp = FTP(self.host)
ftp.login(user=self.username, passwd=self.password)
ftp.cwd(self.remote_path)
ftp.storbinary("STOR " + "myfilename.json", chunk_io)
Что у меня уже есть и работает, так это если я держу весь файл в памяти и отправляю его сразу следующим образом:< /p>
Код: Выделить всё
string_io = io.BytesIO(all_chunks_together_in_one_string)
ftp = FTP(self.host)
ftp.login(user=self.username, passwd=self.password)
ftp.cwd(self.remote_path)
ftp.storbinary("STOR " + "myfilename.json", string_io )
Подробнее здесь: https://stackoverflow.com/questions/516 ... -in-python
Мобильная версия