在Web服务(Flask Web服务器,与Gunicorn,Gevent Workers部署)中,有一个请求处理程序会查询一组对象,并更新状态,如下:
: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
我确定Infos在数据库中,其他服务将以并发要求请求,但是在某些请求中,我记录了日志中的错误(找不到INFO)。我很困惑为什么有时无法加载数据。
我不确定您的代码其他部分,但我想信息类是您的Mongoengine文档:
class Info(mongoengine.Document):
job_id = mongoengine.StringField(...)
info_id = mongoengine.StringField(...)
如果是真的,则必须使用 info.Objects 而不是 info.Object 才能访问集合的QuerySet(在对象的末尾注意'S')。因此,您的代码必须是这样的:
infos = Info.objects(job_id=job_id, info_id__in = info_ids)