2017-05-23 9 views
2

장고 앱의 일부로 Celery와 MongoEngine을 사용하고 있습니다. 그것은 명확하게 mongoengine의 기반이된다 멀티와 pyMongo 함께 할 수있는 뭔가가MongoEngine을 다루고 "UserWarning : MongoClient가 fork 전에 열렸습니다. connect = False로 MongoClient를 생성하거나, fork 후에 클라이언트를 만듭니다"

UserWarning: MongoClient opened before fork. Create MongoClient with 
connect=False,or create client after forking. See PyMongo's 
documentation for details: 
http://api.mongodb.org/python/current/faq.html#using-pymongo-with-multiprocessing 

: 셀러리 @shared_task이 mongoengine 모델 클래스를 통해 MongoDB를 데이터베이스에 액세스 할 때

나는이 경고를 얻고있다.

내 질문은 :

mongoengine이 문제를 방지 할 수있는 최선의 전략은 무엇입니까?

내가 settings.py에 mongoengine와 MongoDB를 연결하고 있습니다 :

mongoengine.connect('my_mongo_database_name', alias='default') 

답변

4

온라인 약간의 검색 후, 나는 mongoengine.connect 기능을 추가에게 추가적인 인수를 전달하는 것이 가능하다는 것을 발견 인수는 기본 PyMongo 클래스 & 함수에 전달됩니다.

그래서 나는 단순히 다음에 mongoengine.connect() 호출 편집 :

mongoengine.connect('my_mongo_database_name', alias='default', connect=False) 

을 그리고 경고가 나타나는 중단했다. 아무도는 이것이 경고를 다룰 수있는 최선의 방법이라고 확신하지 못합니다. 당신이 더 좋은 대답을 가지고 있다면 그것을 게시하십시오. 기꺼이 시험하고 결국 그것을 받아 들일 것입니다.

+0

셀러리와 플라스크에 동일한 문제가 있습니다. 또한 가장 좋은 방법을 알고 싶습니다. – spitz