使用web2py流式传输couchdb附件

时间:2012-08-09 09:24:09

标签: python streaming couchdb web2py html5-audio

我在couchdb数据库(与web2py无关)中有一些声音文件。我的web2py应用程序可以访问此数据库,我想流式传输声音文件,以便可以使用HTML音频标记来监听它们,如下所示:

<audio src="http://www.myserver.com/.../track06.mp3" preload="auto"></audio>

我打算根据此suggested example

进行此流式传输
def streamer():
    import os
    path=os.path.join(request.folder,'private','largefile.mpeg4')
    return response.stream(open(path,'rb'),chunk_size=4096)

但我有一些悬而未决的问题:

  1. 我的文件名不在本地文件系统中,而是在couchdb数据库中,可通过REST访问。我如何打开进行流式传输?
  2. 音频标签在激活,GET / POST / ...时会发送什么样的请求?可以使用web2py处理吗?
  3. 基本上,我想知道某人是否有通过couchdb传输web2py附件的实际示例。

1 个答案:

答案 0 :(得分:1)

我现在使用的解决方案是:

def open_remote_recording():
    recording_doc_id, recording_id = tuple(request.args)
    url = get_doc_url(server = RECORDINGS_SERVER, database = RECORDINGS_DATABASE, doc_id = recording_doc_id, attachment = recording_id)
    content_type = 'audio/mp3'
    f = urllib.urlopen(url)
    return f

@auth.requires_login()
def recordings():
    f = open_remote_recording()
    return response.stream(f, chunk_size=4096)

get_doc_url功能只是创建一个访问附件的网址。 content_type是固定的,但这应该从附件中获取(我还不知道如何做)。