2017-04-12 1 views
1

Ich verwende Sellerys periodische Funktion, um Stapelupdates meiner Datenbank zu machen. Die einzufügenden Daten werden von einer anderen Funktion desselben Skripts in einer globalen Liste gespeichert. Das Problem ist, dass die Liste immer leer ist, wenn die periodische Funktion ausgeführt wird.Wie man globale Variablen zwischen Selleries periodischer Funktion und einer Python-Funktion teilt

Es folgt der Code-Snippet für das gleiche:

client = MongoClient('localhost:27017') 
db  = client.module_data 
batchData = [] 


@periodic_task(run_every=(crontab(minute='*/1')), name='Batch_Update') 
def batchUpdate(): 
    global batchData 
    print batchData 
    if len(batchData)>0: 
     db.logs.insert_many([_data for _data in batchData]) 

def writeLog(event='', method='', execution_time=0.0): 

    global batchData 

    if event=='' or method=='' or execution_time==0.0: 
     return 

    _date = datetime.now() 
    _data = {'event':event, 'method':method, 'execution_time':execution_time, 'date':_date} 

    #db.logs.insert(_data) 
    batchData.append(_data) 
    print batchData 

jemand mir dabei helfen?

Antwort

0

Verwenden Sie Ihr Backend. Wie ich sehen kann ist es Mongo. Speichern Sie Daten auf dem Mongodb, wenn Sie writeLog tun und lesen Sie es in Ihrem batchUpdate. Bitte achten Sie auf die Art der Daten, die Sie speichern möchten. Es sollte wahrscheinlich serialisiert werden als pickle oder json.

Verwandte Themen