【发布时间】:2020-04-28 19:34:06
【问题描述】:
我编写了一个机器人来监控游戏服务器、提供网络界面并通过套接字与客户端进行通信。到目前为止,所有这些都运行良好,耗尽了烧瓶开发服务器。
我很乐意让它与 uwsgi 一起工作,因为 flask 建议不要使用他们的集成网络服务器(即使它看起来工作得很好)
我完全不知所措。将这件事作为一个学习项目开始,在我前进的过程中尝试自学。现在我有这个东西,它看起来不像在示例、教程或文档中找到的任何东西,我什至不知道从哪里开始。
所有的文档和教程都提到了为 uwsgi-server 提供的入口点,比如 module:app
但是这样的结构对我来说不存在。它更像是“global_variable:instance_of_a_class:variable:app”
我在这里尽可能地简化它:
imports...
class Webserver(Module):
app = object
websocket = object
login_manager = object
def get_module_identifier():
return "module_webserver"
def run(self):
app = Flask(__name__)
app.config["SECRET_KEY"] = pulled_from_db
login_manager = LoginManager()
login_manager.init_app(app)
self.app = app
self.websocket = SocketIO(
app,
async_mode=pulled_from_db,
debug=pulled_from_db,
engineio_logger=pulled_from_db,
use_reloader=pulled_from_db,
passthrough_errors=True,
ping_timeout=15,
ping_interval=5
)
self.login_manager = login_manager
websocket_instance = Thread(
target=self.websocket.run,
args=[self.app],
kwargs={
"host": pulled_from_db,
"port": pulled_from_db
}
)
websocket_instance.start()
while not self.stopped.wait(self.next_cycle):
... do the modules tasks
# modules get instantiated when their file gets imported
loaded_modules_dict[Webserver().get_module_identifier()] = Webserver()
这个类是按需加载的,可能根本不存在。我怎样才能让这个东西与 uwsgi 一起工作?任何和所有的建议将不胜感激
我在其他模块中使用这些东西,通过 modules.webserver.whatever() 类型的调用引用它
完整代码在这里:link to my projects webserver module
我担心并准备好改变项目的整个结构,但如果有任何机会让它按原样工作,那就太好了。任何和所有建议和提示将不胜感激 - 遗憾的是,我什至还没有找到关于如何解决这个问题的想法的开始。即使在阅读了数小时的文档和示例之后,我对 uwsgi 的理解也很差。整个概念对我来说是陌生的:)
我唯一的想法是以某种方式挑出这个模块,自己加载它并尝试将其传递给。不,我完全不知道。我知道有人提出问题会提供他们尝试过的东西。但我什至不知道从哪里开始思考。我担心我的整个项目都太靠自学了,无法挽救:/
【问题讨论】:
标签: python-3.x nginx flask uwsgi flask-socketio