我已经创建了一个Django-rest-framework应用程序。它公开了一些API,它在MySQL DB中执行一些get / set操作。
我需要向另一台服务器发出HTTP请求,并将此响应与通常的响应一起搭载。我正在尝试使用自制的HTTP连接池来发出HTTP请求,而不是在每个请求上建立新的连接。
保留此应用级HTTP连接池对象的最合适位置是什么?
我环顾四周寻找它&有多个解决方案,每个都有一些缺点。以下是一些:
在diff文件中创建池的单例类,但这不是一个好的pythonic方法。关于为什么不使用单例设计模式,有各种各样的讨论。
另外,我不知道汇集一个pooler有多聪明? (:P)
要使用会话,但我想如果它是特定于用户会话的内容(例如用户特定的号码等)则更有意义
此外,对象需要可序列化。我不知道如何序列化HTTP连接池。
存储此类应用/全局级别变量的最佳位置是什么?
答案 0 :(得分:0)
可能的解决方案是实现自定义Django中间件,如https://docs.djangoproject.com/ja/1.9/topics/http/middleware/中所述。
您可以在中间件的 __ init __ 方法中初始化HTTP连接池,该方法在第一次请求时仅称为一次。然后,在 process_request 期间启动HTTP请求,并在 process_response 上检查它已完成(或等待它)并将该响应附加到内部请求。