2017-08-30 3 views
1

in einem Webdienst (Kolben Web-Server, zum Einsatz mit gunicorn, GEVENT Arbeiter), gibt es einen Request-Handler eine Reihe von Objekten abfragen wird und aktualisiert den Status wie folgt:mongoengine kann die Daten nicht korrekt geladen in Gleichzeitigkeit

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 

Ich bin sicher, dass die Infos in der Datenbank sind, andere Dienst wird dies im Nebenläufigkeit fordern, aber in einigen Anfragen protokollierte ich den Fehler in den Protokollen (Infos werden nicht gefunden). Ich bin ziemlich verwirrt, warum die Daten manchmal nicht geladen werden können.

Antwort

0

Ich bin über die anderen Teile des Codes nicht sicher, aber ich denke, die Info-Klasse ist Ihr mongoengine Dokument wie folgt aus:

class Info(mongoengine.Document): 
    job_id = mongoengine.StringField(...) 
    info_id = mongoengine.StringField(...) 

Wenn es wahr ist, du Info.objects stattdessen verwenden müssen von Info.Objekt, um auf das Abfrage-Set Ihrer Sammlung zuzugreifen (beachten Sie das 's' am Ende der Objekte). Also, Ihr Code muss etwas in der Art sein:

+0

Sorry, Sie zu verwechseln, das ist Tippfehler, eigentlich in meinem Code ist 'Objekte' – lestergyl

Verwandte Themen