python - IndexError: no such item for Cursor instance

 手机用户2402852307 发布于 2022-10-30 20:50

我想从数据库中获取一个随机获取一个ip代理,这些代理是从网上获取的。

        if proxy:
            proxyIPList=Ip_Live_Still.find()
            proxy=proxyIPList[random.randint(1,proxyIPList.count())]
            while proxy['timeused']>2:#如果这个ip延迟大于2秒,再重新获取一个。
                proxy = proxyIPList[random.randint(1, proxyIPList.count())]
            self.proxyIPport=proxy['port']
            self.proxyIP=proxy['ip']

代码意思是根据proxy是否True来决定是否添加代理ip,我做法是每次根据延迟来决定是否重新获取proxy。Ip_Live_Still是一个存放ip的mongodb数据库。
虽然没有必要,为表诚意,我决定将数据库截图附上,这样更好莉姐:

上边的这些代码都是某一个函数中的,在后边我会在其他任务中根据是否需要代理来决定使用这段代码。代码就是这个意思。

问题是:它会报错,错误是:

IndexError: no such item for Cursor instance

字面意思是这个cursor是空的,但是这个明显不是空的,网上看了看stockoverflow中一个人的自问自答,说自己多线程导致的,难道是因为python的多线程同时操作会处问题?可是mongodb支持多线程还挺好的啊,每次其他操作都是开很多线程的我从来没发现问题。表示答案没有看懂,网上说主要是多线程导致的,说最好是使用next()这个cursor的方法,可是我不是想获得下一个,而是获取随机一个。
希望各位高手能详细解答一下具体是什么原因,如果能给个解决方案的话,感激不尽。

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有