2017-12-05 3 views
0
, 그래서 여기 내 문제 괜찮

:강제 삭제

나는 매우 자주 (초당 여러 번)를 호출하는 기능과 계산하도록되어 변수 old_date이 기능.
그러나이 변수는 함수가 처음 호출 될 때 한 번만 계산 된 다음 동일한 값을 유지하는 것으로 보입니다. 여기

는 기능입니다 :
def can_push(date): 
    """ 
    Check if the last data was pushed more than TIMEFRAME ago 
    :param date: string, date of the new data 
    TIMEFRAME = datetime.timedelta(seconds=1) 
    DB = MongoClient(HOST, PORT).database 
    DATE_FMT = '%Y-%m-%dT%H:%M:%S.%fZ' 
    """ 

    # If collection doesn't exist, we create it and return True 

    out = False 
    # Get MongoDB collection 
    coll = DB.coll 
    # Date of the new data (got through websocket) 
    new_date = datetime.strptime(date, DATE_FMT) 
    # Date of the last data pushed in DB 
    cursor = coll.find().sort('{date:-1}').limit(1) 
    old_date = cursor[0]['date'] 
    print old_date # Format is okay, but date is too old 

    if (new_date - old_date) > TIMEFRAME: 
     out = True 
    # gc.collect() 
    del old_date 
    return out 

내가 del old_date을 시도했지만 작동하지 않는 것 같습니다.

this을 읽은 후에 나는 gc.collect()을 사용하려고했지만 파이썬에 익숙하지 않아서 실제로 무엇을하는지 잘 모르겠습니다.

MongoDB 쉘에 연결하면 실제로 데이터베이스에 푸시 된 마지막 데이터가 old_date보다 나보다 작은 지 확인할 수 있습니다.

누구나 강제로 기능을 끝내는 old_date을 삭제하는 다른 방법이 있습니까?

파이썬 버전 : 2.7.12
커널 : 우분투 16.04

+0

old_date는 mongo에 데이터베이스를 쓰고 있습니까? – geckos

+0

나는 다른 기능을한다. 'can_push'가 True를 반환하면 데이터를 데이터베이스에 푸시합니다. – Malou

+0

멀티 스레딩? 그렇다면 동기화를 확인하십시오 – geckos

답변

0

확인 오류가 오타, 내 나쁜 있도록.

그것은해야합니다 : 그것은 MongoDB의 쉘에서 일 이후

cursor = coll.find().sort("date", -1).limit(1) 

는 내 요청이 정확하다고 conviced했다.

시간을내어 죄송합니다. 도움에 감사드립니다.

+0

그것이 효과가있어 기쁩니다. 문안 인사! – geckos