首頁  >  問答  >  主體

python - IndexError: no such item for Cursor instance

我想从数据库中获取一个随机获取一个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的方法,可是我不是想获得下一个,而是获取随机一个。
希望各位高手能详细解答一下具体是什么原因,如果能给个解决方案的话,感激不尽。

阿神阿神2740 天前1948

全部回覆(0)我來回復

無回覆
  • 取消回覆