【发布时间】:2017-01-22 06:48:27
【问题描述】:
我创建了一个 Django-rest-framework 应用程序。它公开了一些在 MySQL DB 中执行一些 get/set 操作的 API。
我需要向另一台服务器发出 HTTP 请求,并将此响应与通常的响应一起搭载。我正在尝试使用自制的 HTTP 连接池来发出 HTTP 请求,而不是在每个请求上都建立新的连接。
保存这个应用级 HTTP 连接池对象的最合适的位置是什么?
我已经四处寻找它,并且有多种解决方案,每种都有一些缺点。以下是一些:
-
在 diff 文件中创建一个池的单例类,但这不是一个很好的 Pythonic 做事方式。关于为什么不使用单例设计模式存在各种讨论。
另外,我不知道汇集一个pooler会有多聪明? (:P)
- 将其保存在应用程序目录的 init.py 中。问题如下:
- 它应该只包含导入和与之相关的东西。
- 很难对代码进行单元测试,因为导入会在模拟之前发生,并且实际上会尝试访问 API。
-
使用会话,但我想如果它是特定于用户会话的东西,比如用户特定的数字等,那会更有意义
此外,对象需要可序列化。不知道HTTP连接池是怎么序列化的。
- 在 views.py 中保持全局性,但也不鼓励这样做。
存储此类应用程序/全局级别变量的最佳位置是什么?
【问题讨论】:
-
你有没有找到更好的解决方案来实现这个?
标签: python django django-rest-framework global-variables