作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 python + Django 来处理传入的 Web 请求,这些请求可以发布大量作为 POST 数据字段之一附加的 JSON(例如 var1=abc&json_var=lots_of_data&other_var=xxx)。我想使用我自己的流式 json 解析器以流式处理方式处理 JSON,该解析器采用类似文件的句柄作为其输入参数。它出现于https://docs.djangoproject.com/en/1.11/ref/request-response/使用 HttpRequest.__iter__()
这是可行的,但我找不到任何如何使用自己的代码实现此目的的示例(即不仅仅是导入像 xml.etree.ElementTree 这样的库) .
基本上,我想做以下事情:
带有大 JSON 的 POST 请求 => Django/python => 创建类似文件的句柄来读取 POST => 流式 url 解码器 => 流式 JSON 处理器
我可以使用 ijson 作为流式 JSON 处理器。如何填补这两个空白,为 POST 数据创建类似文件的句柄并将其传递给流式 url 解码器?我不想自己动手,但我想如果有必要的话我可以。
最佳答案
我只能通过滚动我自己的生成器和迭代器来解决这个问题。解决这个问题有几个关键:
request.META.get('wsgi.input')
找到它,我使用 this post 找到它。转储所有请求属性把它们放在一起看起来像:
f = request.META.get('wsgi.input')
ff = some_magic_adaptor(qs_from_file_to_generator(f))
while ff.next_pair():
print 'varname:' + ff.varname
if ff.varname == 'stream_parse_this':
parser = stream_parser(ff)
for event_results in parser:
do_something
while True:
data = ff.read(buffer_size)
if not data:
break
do_something_with_data_chunk(data)
关于python - django:如何将传入的 POST 数据作为类似文件的 obj 来使用以进行流处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44339563/
我是一名优秀的程序员,十分优秀!