繁体   English   中英

如何使用 gunicorn+uvicorn workers 或 Daphne+supervisor 分享 memory

[英]How to share memory using gunicorn+uvicorn workers or Daphne+supervisor

我有一个 Django web 应用程序,它使用 Daphne web 服务器。 我在使用 supervisor 运行多个应用程序实例时遇到问题(对应于使用 gunicorn 运行多个 uvicorn worker 的应用程序)。 我试图通过使用 Redis 数据库共享 memory 来保存用户实例来解决这个问题,这样每个工作人员都可以访问登录的用户,但后来我遇到了问题。 用户 class 内部有线程,我无法 pickle _thread.lock object,所以我不能使用 Redis。如果我将线程与用户 class 分开,我根本不会从中获利,因为那时工人必须做同样的事情再次工作,即在我发送请求时创建一个线程。 这个问题有解决方法吗? 即使用内部共享 memory 或类似的东西?

好的,所以我所要做的就是从 class 内部的变量中删除一个线程,并将线程仅放在方法内部。 这样我就没有 _thread.lock object 了,我可以 pickle 一个 object 把它放在共享的 memory 里面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM