我有一个Python脚本,利用最新的Vimeo API(https://developer.vimeo.com/api/)将一些视频上传到我的Vimeo帐户 .
以下是一种略微简化的形式,脚本基本上是这样的:
from vimeo import VimeoClient
vimeo = VimeoClient('my_token_here')
uid = vimeo.upload('/path/to/file.mov')
当 file.mov
为3MB或更少时,一切正常,文件已成功上传 . 但是,对于较大的文件,我收到超时错误:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/fabio/.virtualenvs/venv/src/vimeo/vimeo/uploads.py", line 79, in __call__
return do_upload()
File "/home/fabio/.virtualenvs/venv/src/vimeo/vimeo/uploads.py", line 70, in do_upload
self.upload_segment(upload_uri, _range, video_data, filetype or 'mp4')
File "/home/fabio/.virtualenvs/venv/src/vimeo/vimeo/uploads.py", line 135, in upload_segment
body=data, headers=request_headers)
File "/home/fabio/.virtualenvs/venv/lib/python2.7/site-packages/tornado/httpclient.py", line 85, in fetch
self._async_client.fetch, request, **kwargs))
File "/home/fabio/.virtualenvs/venv/lib/python2.7/site-packages/tornado/ioloop.py", line 389, in run_sync
return future_cell[0].result()
File "/home/fabio/.virtualenvs/venv/lib/python2.7/site-packages/tornado/concurrent.py", line 131, in result
return super(TracebackFuture, self).result(timeout=timeout)
File "/home/fabio/.virtualenvs/venv/lib/python2.7/site-packages/tornado/concurrent.py", line 65, in result
raise self._exception
HTTPError: HTTP 599: Timeout
这是我正在使用的vimeo库:https://github.com/vimeo/vimeo.py .
我的虚拟环境中的Tornado库已更新为3.2.1版本 .
有什么提示吗?
1 回答
从Tornado source开始,
vimeo
正在使用的HTTPClient
的默认请求超时为20秒 . 它看起来像Vimeo library attempts to upload as much of the video as possible,然后查询服务器以查看成功上传了多少 . 上传视频的时间可能超过20秒,因此超时 . 我不相信他们正确处理这个问题,因为你从Tornado收到超时错误,但似乎他们想要支持整个文件不立即上传 .您可以尝试修改我上面链接的
vimeo
库代码,通过将本地副本中的链接行更改为以下内容来实现更长的超时:如果这不起作用,您可以尝试在他们的
github
问题跟踪器上提出问题,并且实际从事该项目的人可能能够进一步帮助您 .