在一个Web服务(flask web服务器,部署有gunicorn,gevent worker)中,有一个请求处理程序将查询一组对象并更新状态,如下所示:
def update_status(job_id,info_ids):
infos = Info.objects(job_id=job_id, info_id__in = info_ids)
if len(infos) == 0:
logger.error('infos are not found')
for i in infos:
pass
我确定信息存在于数据库中,其他服务将以并发方式请求此信息,但在某些请求中,我在日志中记录了错误(未找到信息)。我很困惑为什么有时无法加载数据。
答案 0 :(得分:0)
我不确定代码的其他部分,但我猜Info类是你的mongoengine文档:
class Info(mongoengine.Document):
job_id = mongoengine.StringField(...)
info_id = mongoengine.StringField(...)
如果确实如此,您必须使用 Info.objects 而不是 Info.object 来访问您的集合的查询集(请注意对象末尾的's') 。所以,你的代码必须是这样的:
infos = Info.objects(job_id=job_id, info_id__in = info_ids)