首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用vimeo和django上传视频

使用vimeo和django上传视频
EN

Stack Overflow用户
提问于 2020-05-20 06:59:21
回答 1查看 662关注 0票数 2

我正在创建一个功能,让用户提交他们的产品在电子商务项目的视频。用户通过带有filefield的django表单上传视频,然后我使用django拍摄视频并将其发送到Vimeo的API进行上传。这是目前工作,但我注意到它真的很慢。当用户在表单上按下submit (提交)时,视频长度为1分钟(120mb),他们等待超过1分钟才能成功提交表单。

什么是最好的解决方案,让上传完成,但仍然让用户继续浏览我们的网站,而它在后台运行?

传递给此函数的视频是表单中的TemporaryUploadedFile。

代码语言:javascript
运行
复制
def video_upload(video, product_pk):

    #Initial sending, get an upload link

    url = 'https://api.vimeo.com/me/videos'
    headers = {
    'Authorization': 'bearer %s' % settings.VIMEO_TOKEN, 'Content-Type' : 'application/json', 'Accept' : 'application/vnd.vimeo.*+json;version=3.4'}

    data = {'upload' :{ 'approach' : 'tus', 'size' : video.size}, 'name' : str(product_pk)}

    r = requests.post(url, headers=headers, data=json.dumps(data))



    if r.status_code == 200:


        uri = r.json()['uri'] # link to final video
        upload_link = r.json()['upload']['upload_link']
        approach = r.json()['upload']['approach']#should be tus


        if approach == 'tus':

            #first attempt to upload video

            headers = {'Tus-Resumable': '1.0.0', 'Upload-Offset' : '0', 'Content-Type' : 'application/offset+octet-stream', 'Accept' : 'application/vnd.vimeo.*+json;version=3.4'}
            video_rb = video.open('rb')
            r = requests.patch(upload_link, video_rb, headers=headers)


            #Second attempt to upload video



            #Verify upload is complete

            headers = {'Tus-Resumable': '1.0.0',  'Accept' : 'application/vnd.vimeo.*+json;version=3.4'}
            r = requests.head(upload_link, headers=headers)


            return uri

请注意,该功能尚未完成,因为我需要添加更多的视频上传等第二次尝试的逻辑。

任何关于更有效和可伸缩的方法的建议都将非常受欢迎。

EN

回答 1

Stack Overflow用户

发布于 2021-03-08 03:16:40

我用Celery和Redis设置了一个异步函数,做了类似的事情。这样我就可以让用户在后台上传内容时立即继续。上传内容后,我将URL保存到数据库中的某个位置,并将上传完成(或失败)的信息推送给用户。希望这能为任何观众提供解决这个问题的潜在方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61902218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档