如何反向代理位于类内部并从线程开始的flask / socketio

问题描述 投票:0回答:1

我编写了一个机器人来监视游戏服务器,提供Web界面并通过套接字与客户端进行通信。到目前为止,所有这些工作都很好,用完了flask开发服务器。

[我很想让它与nginx一起使用,因为flask建议不要使用其集成的Web服务器(即使它看起来似乎很好)]

我完全不知所措。将此东西作为一个学习项目开始,并尝试自学。现在,我在这里遇到的东西看起来与示例,教程或文档中的东西都不一样,我什至不知道从哪里开始。

[所有文档和教程都谈到了为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()

此类是按需加载的,可能并不总是存在。我怎样才能将此东西代理到Nginx?任何和所有建议,将不胜感激

我正在其他模块中使用这些东西,通过modules.webserver.whatever()调用类型对其进行引用

完整的代码在这里:link to my projects webserver module

我很害怕并且准备要更改项目的整个结构,但是如果有机会让它按原样工作,那就太好了。任何建议和技巧都将不胜感激-可悲的是,我什至还没有找到有关如何解决此问题的想法的开端。即使阅读了数小时的文档和示例,我对uwsgi的理解仍然很差。整个概念对我来说是陌生的:)

我唯一的想法是以某种方式选出这个模块,自己加载它,然后尝试将其传递给它。不,我一点都不知道。我知道有人问一个问题会提供他们尝试过的东西。但是我什至不知道从哪里开始思考。我担心我的整个项目过于自学,无法挽救:/

我编写了一个机器人来监视游戏服务器,提供Web界面并通过套接字与客户端进行通信。到目前为止,所有这些工作都很好,用完了flask开发服务器。我想...

python-3.x multithreading nginx flask flask-socketio
1个回答
0
投票

我认为您在混淆两件事。

© www.soinside.com 2019 - 2024. All rights reserved.