셀러리를 배우고, Celery Best Practices을 읽고, 샐러리와 데이터베이스 사용에 대해 아주 간단한 질문이 있습니다.셀러리 작업자에서 mongodb에 올바르게 연결하는 방법은 무엇입니까?
데니 Bertovic는 말한다 : 직렬화 된 오브젝트는 오래된 데이터를 포함 할 수 있기 때문에 당신은 에 (예를 들어 귀하의 사용자 모델) 백그라운드 작업을 데이터베이스 오브젝트를 통과하지해야
.
@app.task def add(x, y, collection): client = MongoClient('mongodb://localhost:27017/') db = client.wakawaka db[collection].insert_one({'sum':x+y}) return True
나 :
client = MongoClient('mongodb://localhost:27017/') db = client.wakawaka @app.task def add(x, y, collection): db[collection].insert_one({'sum':x+y}) return True
나는 노동자의 데이터베이스에 연결하려는 경우
따라서, 올바른 선택은 무엇인가?
UPD : 나는 내가 뭔가를해야 할 때마다, 작업이 신선한 DB에 연결, 모든 작업의 끝에 내 MongoDB의 연결을 close()
수 있으며, 어떤 자원이 낭비되지 않습니다. 그래도 데이터베이스 연결을 여러 번 열거 나 닫아야합니까? 아니면 한 번 연결하면 DB의 최신 버전을 검색하기 위해 연결을 새로 고칠 수 있습니까?