Django-收到来自外部网站的流请求

伊恩·普莱斯(Ian Price)

如何使用Django从用户请求触发的外部API中获取数据,并在请求周期内直接将其流回,而无需(或使用渐进式/最小化)内存使用?

背景

作为连接外部托管的微服务的短期解决方案,需要将用户的可访问性(基于Django应用程序的身份验证系统)限制为未经身份验证的API。以前的开发人员使用Javascript公开了这些外部IP,我们需要一种解决方案以使其不受公众欢迎。

要求

  • 我们不限于使用请求库,如果可以帮助加快响应时间,则可以使用其他任何库。
  • 外部API的响应可能会很大(5-10MB),并且能够缩短请求周期(通过Ajax> Django>外部API> Django>用户的用户请求)至关重要。

这可能吗?如果是这样,您能建议一种方法吗?

from django.shortcuts import Http404, HttpResponse
import requests

def api_gateway_portal(request, path=''):
    # Determine whether to grant access

    # If so, fetch and return data
    r = requests.get('http://some.ip.address/%s?api_key=12345678901234567890' % (path,))

    # Return as JSON 
    response = HttpResponse(r.content, content_type='application/json')
    response['Content-Length'] = len(r.content)

    return response

请注意-我完全知道这是一个糟糕的长期解决方案,但是对于演示目的来说是短期必需的,直到新的外部身份验证系统完成为止。

弗拉基米尔·达尼洛夫(Vladimir Danilov)
import requests

from django.http import StreamingHttpResponse

def api_gateway_portal(request, path=''):
    url = 'http://some.ip.address/%s?api_key=12345678901234567890' % (path,)
    r = requests.get(url, stream=True)

    response = StreamingHttpResponse(
        (chunk for chunk in r.iter_content(512 * 1024)),
        content_type='application/json')

    return response

说明文件:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django,处理来自外部服务器的响应

来自分类Dev

播放来自外部网站的流时,Android Media Player错误(1,-1004)

来自分类Dev

.htaccess拒绝来自外部请求的访问

来自分类Dev

是否可以阻止来自外部的请求?

来自分类Dev

来自外键的Django管理员限制模型

来自分类Dev

来自外键的字段未在 django admin 中显示数据

来自分类Dev

iOS:未收到来自Facebook App请求的通知

来自分类Dev

iOS:未收到来自Facebook App请求的通知

来自分类Dev

将来自外部网站的帖子数据提交到 Laravel

来自分类Dev

在Android Studio中找不到来自外部库的类

来自分类Dev

在Android Studio中找不到来自外部库的类

来自分类Dev

如何将.fadeIn()添加到来自外部源的错误消息中

来自分类Dev

JavaScript - 自调用函数无法看到来自外部脚本的函数

来自分类Dev

如何路由来自外部请求的React组件?

来自分类Dev

Django拒绝来自Python请求的请求

来自分类Dev

在Django请求中未收到正确的JSON

来自分类Dev

从Django视图重定向到外部网站

来自分类Dev

将来自外部网站的`option`和`select`添加到我的网站

来自分类Dev

是否可以将事件侦听器绑定到来自外部脚本的影子dom中的元素?

来自分类Dev

来自外部硬盘的Ubuntu

来自分类Dev

来自外部js的函数

来自分类Dev

来自外部集群的NMI

来自分类Dev

为什么我的网站无法收到来自ADFS 2.0的声明

来自分类Dev

Django从外部来源接收json发布请求

来自分类Dev

Django从外部来源接收json发布请求

来自分类Dev

收到来自Web Service的响应后,Http请求和响应丢失了吗?

来自分类Dev

在node.js中,如果没有收到来自HTTP请求的响应,您怎么知道?

来自分类Dev

多个POST请求后我没有收到来自服务器的数据

来自分类Dev

在node.js中,如果没有收到来自HTTP请求的响应,您怎么知道?

Related 相关文章

  1. 1

    Django,处理来自外部服务器的响应

  2. 2

    播放来自外部网站的流时,Android Media Player错误(1,-1004)

  3. 3

    .htaccess拒绝来自外部请求的访问

  4. 4

    是否可以阻止来自外部的请求?

  5. 5

    来自外键的Django管理员限制模型

  6. 6

    来自外键的字段未在 django admin 中显示数据

  7. 7

    iOS:未收到来自Facebook App请求的通知

  8. 8

    iOS:未收到来自Facebook App请求的通知

  9. 9

    将来自外部网站的帖子数据提交到 Laravel

  10. 10

    在Android Studio中找不到来自外部库的类

  11. 11

    在Android Studio中找不到来自外部库的类

  12. 12

    如何将.fadeIn()添加到来自外部源的错误消息中

  13. 13

    JavaScript - 自调用函数无法看到来自外部脚本的函数

  14. 14

    如何路由来自外部请求的React组件?

  15. 15

    Django拒绝来自Python请求的请求

  16. 16

    在Django请求中未收到正确的JSON

  17. 17

    从Django视图重定向到外部网站

  18. 18

    将来自外部网站的`option`和`select`添加到我的网站

  19. 19

    是否可以将事件侦听器绑定到来自外部脚本的影子dom中的元素?

  20. 20

    来自外部硬盘的Ubuntu

  21. 21

    来自外部js的函数

  22. 22

    来自外部集群的NMI

  23. 23

    为什么我的网站无法收到来自ADFS 2.0的声明

  24. 24

    Django从外部来源接收json发布请求

  25. 25

    Django从外部来源接收json发布请求

  26. 26

    收到来自Web Service的响应后,Http请求和响应丢失了吗?

  27. 27

    在node.js中,如果没有收到来自HTTP请求的响应,您怎么知道?

  28. 28

    多个POST请求后我没有收到来自服务器的数据

  29. 29

    在node.js中,如果没有收到来自HTTP请求的响应,您怎么知道?

热门标签

归档