在请求-回复周期结束时是否收集了请求数据垃圾?

时间:2019-04-02 12:28:26

标签: django python-3.x django-rest-framework garbage-collection gunicorn

我正在通过django作为drf应用程序运行gunicorn API(wsgi)。

API正在处理需要从系统内存(ram)中清除的敏感信息(密码和其他机密)。我的理解是,将使用常规引用计数机制来垃圾收集API请求中的所有数据:一旦处理了请求并且gunicorn收到了回复,就不再存在对该请求的引用,因此将完全被垃圾回收收集。

这同样适用于在请求处理期间创建的任何对象:在处理完请求后,将删除对该对象的所有引用。

打破这一假设的唯一方法是,如果我执行以下任一操作:

  1. 将对请求的引用存储在全局对象中
  2. 创建对请求对象的循环引用

对于2gc模块将能够检测引用并将其删除。我什至可以使用gc.collect()

手动触发它

只需注意不要将引用存储在全局对象中,就可以避免第一个问题。

我有两个问题:

  1. 关于内存中的数据持久性,我还应该注意其他事情吗?
  2. 如何在gc.collect()中的请求处理结束时强制运行垃圾回收(gunicorn)?

0 个答案:

没有答案