나는 매우 자주 (초당 여러 번)를 호출하는 기능과 계산하도록되어 변수 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
old_date는 mongo에 데이터베이스를 쓰고 있습니까? – geckos
나는 다른 기능을한다. 'can_push'가 True를 반환하면 데이터를 데이터베이스에 푸시합니다. – Malou
멀티 스레딩? 그렇다면 동기화를 확인하십시오 – geckos