當我在多進程模式下啓動uwsgi時,它表示應該使用connect = False運行pymongo。如果我運行flask-mongoengine,如何設置connect = False?用mongoengine運行uwsgi
1
A
回答
0
在你的uwsgi中使用懶惰選項(--lazy)。
mongoengine與多發生死鎖.. :(
3
那麼,作爲巨韓元李說,添加選項懶解決問題,但作爲uwsgi文檔中指出的強烈勸阻:
http://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
uWSGI儘可能地嘗試(ab)使用fork()調用的Copy On Write語義。默認情況下,它會在加載應用程序以儘可能多地共享內存之後進行分叉。如果這種行爲不受歡迎出於某種原因,請使用lazy-apps選項,這將指示uWSGI加載appl在每個工人的叉子()之後。當心因爲有一個名爲懶的方法更多侵入性和高度氣餒舊的選項(這是還在這裏只是爲了向後兼容)
所以,如果你想使用這個選項更好地利用--lazy-應用。據我所知,問題在於,默認情況下,mongoengine for flask只初始化一個分叉程序無法使用的連接(由於pymongo客戶端的一些限制)。什麼使懶惰應用程序的選項是加載每個叉的一切(使用更多的內存)。
有一個裝飾器可以讓你在prefork製作完成後運行代碼。
只需添加到您的應用程序:
from flask.ext.mongoengine import MongoEngine
from uwsgidecorators import postfork
app = Flask(__name__)
# do whatever you want with the application
db = MongoEngine() # set db as MongoEngine (without any app or configuration)
@prefork
def setup_db():
db.init_app(app) # this code actually calls to "connect" in pymongo
# define the rest of calls, etc
我希望這個答案增加了一些澄清!
相關問題
- 1. Mongoengine Uwsgi Dbref屬性錯誤
- 2. 運行Django項目+ uwsgi
- 3. 使用asyncio運行併發mongoengine查詢
- 4. 如何使用virtualenv運行uwsgi
- 5. 使用pid/gid運行uWsgi的問題
- 6. 運行uwsgi用的virtualenv和瓶
- 7. 沒有模塊在運行uWSGI
- 8. 只能以root身份運行uwsgi
- 9. ImportError:運行uwsgi時沒有模塊
- 10. uwsgi工作進程繼續運行
- 11. UWSGI沒有運行Django項目
- 12. uWSGI運行錯誤版本的Python
- 13. 在mongoengine串行
- 14. 使用MongoEngine進行排序?
- 15. 使用uWSGI運行應用程序時需要使用Flask嗎?
- 16. 使用NGiNX運行uWSGI的Django - INI方法不起作用
- 17. nginx如何與運行Flask應用的uWSGI配合使用?
- 18. 如何使用遠程主機運行燒瓶和mongoengine?
- 19. vhost模式下nginx + uwsgi的問題,運行django應用程序
- 20. 在uwsgi/nginx上運行燒瓶應用程序的問題
- 21. 通過子路徑中的nginx + uwsgi運行django應用程序
- 22. 用uwsgi&nginx運行django錯誤:連接()到unix:/tmp/kb.sock失敗
- 23. 如何使用uwsgi web.py來運行後臺功能?
- 24. 重新啓動使用Supervisor和uwsgi運行的Django實例
- 25. uWSGI用於運行Python 2和Python3與Django
- 26. 在uwsgi應用程序中運行子進程
- 27. 獲取的Plone上dotcloud運行(不使用uwsgi)
- 28. 應用程序在uwsgi線程模式下運行緩慢
- 29. 在主管中運行uwsgi出錯,但在命令行中順利運行
- 30. 使用mongoengine
您的示例代碼中的setup_db()上的裝飾器應該是@postfork而不是@prefork? –