我正在创建一个将音频文件发布到API的python脚本。它主要工作;然而,该应用程序是在Heroku上,大型文件似乎被heroku的内存限制所吸引。我尝试使用multipart / form-data,但似乎还不够。我在大约5分钟内收到503错误。
import requests
import os
import glob
from requests_toolbelt import MultipartEncoder
token = 'XXXX'
headers = {'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json'}
base_url = 'https://test.com/api/'
for file in glob.glob("*.mp3"):
files = MultipartEncoder(fields={'file': (file, open(file, "rb"), 'audio/mpeg')})
audio_headers = {'Authorization': 'Bearer ' + token, 'Content-Type': files.content_type}
add_file = requests.post(base_url, headers=audio_headers, data=files)
答案 0 :(得分:1)
Heroku对所有请求都有30秒的限制。较大的文件肯定会超过该期限,因此请求超时。唯一的解决方案是直接从浏览器(例如Amazon S3)发布到第三方存储,然后使用上载数据的位置向heroku发送请求。使用后台进程,您将能够下载文件并按照您的需要进行处理。