2017-04-12 1 views
1

Celery의주기 함수를 사용하여 데이터베이스의 일괄 업데이트를 수행하고 있습니다. 삽입 될 데이터는 동일한 스크립트의 다른 함수에 의해 전역 목록에 저장됩니다. 문제는 Periodic 함수가 실행될 때마다 목록이 빈 것으로 표시된다는 것입니다.Celery의주기 함수와 Python의 함수간에 전역 변수를 공유하는 방법

코드 조각 같은 위해 다음과 같은 :

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 

사람이 나를 도와 드릴까요?

답변

0

백엔드를 사용하십시오. 내가 볼 수 있듯이 몽고 다. writeLog을 할 때 mongodb에 데이터를 저장하고 batchUpdate에서 읽으십시오. 저장하려는 데이터의 특성에주의하십시오. 아마도 pickle 또는 json으로 serialize 할 수 있어야합니다.

관련 문제