使用Python将大文件发布到heroku

时间:2014-08-18 19:13:54

标签: python rest heroku python-requests

我正在创建一个将音频文件发布到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)

1 个答案:

答案 0 :(得分:1)

Heroku对所有请求都有30秒的限制。较大的文件肯定会超过该期限,因此请求超时。唯一的解决方案是直接从浏览器(例如Amazon S3)发布到第三方存储,然后使用上载数据的位置向heroku发送请求。使用后台进程,您将能够下载文件并按照您的需要进行处理。