gpt4 book ai didi

mongodb - 客户端退出后 Pymongo 放弃 "pymongo_kill_cursors_thread"

转载 作者:可可西里 更新时间:2023-11-01 10:14:01 27 4
gpt4 key购买 nike

我有一个 Python 应用程序,它在单独的线程中运行作业。一些 workerjobs 为数据库连接实现 pymongo。

class Job(Thread):
...
self.client = MongoClient()

每个作业都有一个完成方法,其中

self.client.close()

在作业将要终止时被调用。据推测,这应该会结束所有关联的线程,但每个作业的一个线程仍然存在:pymongo_kill_cursors_thread

当我启动多个作业并完成它们时,这些 pymongo_kill_cursors_threads 永远不会死,我在短时间内得到了数百个,这是一个示例,在测试作业完成后:

Result of threading.enumerate()

我不知道为什么 pymongo 的 close() 方法没有正确清理,也不知道这是 pymongo 还是 mongodb 的问题。

尝试

self.client._kill_cursors_executor._thread.join(1)

没有效果,我认为这是因为线程的锁定状态以及它是守护进程这一事实。

任何想法表示赞赏。非常感谢。

使用“PyMongo”,版本:“3.5.1”,Python 3.6.1 和 MongoDB 在官方 docker 镜像中运行

最佳答案

听起来这可能是一个错误,尽管它需要额外的诊断。请在 jira.mongodb.org 的 PYTHON 项目中打开一张票,并提供一个完整的代码示例,我们可以在我们的计算机上运行它来重现您看到的错误:https://stackoverflow.com/help/mcve

谢谢!

关于mongodb - 客户端退出后 Pymongo 放弃 "pymongo_kill_cursors_thread",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46874694/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com