如何在Celery的Periodic函数和Python函数之间共享全局变量

时间:2017-04-12 00:33:20

标签: python celery pymongo

我正在使用Celery的定期功能对我的数据库进行批量更新。要插入的数据由同一脚本的某些其他功能存储在全局列表中。问题是,每当执行Periodic函数时,它都会将列表视为空列表。

以下是相同的代码段:

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

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:0)

使用你的后端。我可以看到它的mongo。当您执行writeLog时,将数据存储到mongodb并在batchUpdate中阅读。 请注意您要存储的数据的性质。它可能应该可序列化为pickle或json。