繁体   English   中英

Django Rest框架(nginx + gunicorn)中的分块传输编码

[英]Chunked transfer-encoding in django rest framework (nginx+gunicorn)

我已经使用Django Rest Framework构建了一个API,可以从django模型提供ical feed。 Feed内容经过验证,并且可以在我测试过的所有日历应用程序中使用, 除了iOS上的iCal之外 如果复制/粘贴,则iO上的iCal将接受内容,但不接受从url导入。

我怀疑导致此问题的原因是http-header: transfer-encoding:分块

我试图弄清楚为什么将传输分块,并查看是否解决此问题将使iOS读取提要。

以下是一些简化的代码:

渲染

from rest_framework import renderers

class ICALRenderer(renderers.BaseRenderer):
   media_type = 'text/html'
   format = 'ical'
   charset = 'utf-8'

   def render(self, data, media_type=None, renderer_context=None):
      blob = tools.ical_generator(data, 'My calendar name', 'My calendar description')
      return blob

tools.ical_generator

def ical_generator(events=[], calname='', caldesc=''):
    cal = vobject.iCalendar()
    # build header
    # iterate over events 
    # build footer
    icalstream = cal.serialize()
    return icalstream

注1:执行wget时 ,只会显示ical_generator的页眉页脚 ,并且传输不会完成,而是无限期地“挂起”。

注意2:该API也可用于ical feed以外的其他目的,并且在其他情况下,http-header 不会分块。

使用内容类型:iOS上的text / calendar和iCal会吃掉它。

我测试过的所有其他验证工具都允许使用text / html和text / plain,因此iOS似乎非常挑剔...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM