我有一个Python应用程序,它在分离的线程中运行作业。一些工人作业为数据库连接实现pymongo。
class Job(Thread):
...
self.client = MongoClient()每个作业都有一个完成方法,其中
self.client.close()将在作业终止时调用。假设,这应该结束所有相关的线程,但是每个作业的一个线程仍然是活的:pymongo_kill_cursors_thread
当我启动多个作业并完成它们时,这些pymongo_kill_cursors_threads永远不会死,我在短时间内得到了数百个作业,下面是一个测试工作完成后的一个例子:
我不知道为什么pymongo的close()方法没有正确清理,也不知道这是否是pymongo或mongodb问题。
正在尝试
self.client._kill_cursors_executor._thread.join(1)没有任何效果,我认为这是因为线程的锁定状态和它是守护进程的事实。
任何想法都值得赞赏。非常感谢。
使用"PyMongo",版本:"3.5.1“,在官方的对接映像中运行Python3.6.1和MongoDB
发布于 2017-10-22 15:35:37
听起来可能是个bug,尽管它需要额外的诊断。请在jira.mongodb.org的project中打开一张票证,并提供一个完整的代码示例,我们可以在我们的计算机上运行这个示例来复制您看到的错误:https://stackoverflow.com/help/mcve。
谢谢!
https://stackoverflow.com/questions/46874694
复制相似问题