ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – Django:应用程序级变量

2019-07-11 06:57:05  阅读:185  来源: 互联网

标签:python global-variables django django-rest-framework


我已经创建了一个Django-rest-framework应用程序.它公开了一些API,它在MySQL DB中执行一些get / set操作.

我需要向另一台服务器发出HTTP请求,并将此响应与通常的响应一起搭载.我正在尝试使用自制的HTTP连接池来发出HTTP请求,而不是在每个请求上建立新的连接.

保留此应用级HTTP连接池对象的最合适位置是什么?

我环顾四周寻找它&有多个解决方案,每个都有一些缺点.这里有一些:

>在diff文件中创建池的单例类,但这不是一个好的pythonic方法.关于为什么不使用单一设计模式,有各种各样的讨论.

另外,我不知道汇集一个pooler有多聪明? (:P)
>将其保存在app dir的init.py中.问题如下:

>它应该只包含进口和与此相关的事情.
>单元测试代码将很困难,因为导入会在模拟之前发生,并且实际上会尝试命中API.

>要使用会话,但我想这更有意义,如果它是用户会话特定的东西,如用户特定的数字等

此外,对象需要可序列化.我不知道如何序列化HTTP连接池.
>在views.py中保持全局,但也不鼓励这样做.

存储此类应用/全局级别变量的最佳位置是什么?

解决方法:

一种可能的解决方案是实现自定义Django中间件,如https://docs.djangoproject.com/ja/1.9/topics/http/middleware/中所述.

您可以在中间件的__init__方法中初始化HTTP连接池,该方法仅在第一次请求时调用一次.然后,在process_request期间启动HTTP请求,并在process_response检查它已完成(或等待它)并将该响应附加到内部请求.

标签:python,global-variables,django,django-rest-framework
来源: https://codeday.me/bug/20190711/1429804.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有