我在 Django 应用程序中一起使用 PyMongo 和 gevent。在生产中,它托管在 Gunicorn 上。
我在应用程序启动时创建了一个 Connection 对象。我有一些后台任务连续运行并每隔几秒钟执行一次数据库操作。
该应用程序还像任何 Django 应用程序一样提供 HTTP 请求。
我遇到的问题如下。它只发生在生产中,我无法在我的开发环境中重现它。当我让应用程序空闲一会儿(尽管后台任务仍在运行)时,在第一个 HTTP 请求(实际上是前几个)上,我执行的第一个“查找”操作永远不会完成。greenlet 实际上永远不会恢复。这会导致前几个 HTTP 请求超时。
我该如何解决?这是 gevent 和/或 PyMongo 中的错误吗?