【问题标题】:Running a Flask server parallel to main app与主应用程序并行运行 Flask 服务器
【发布时间】:2016-04-14 08:40:54
【问题描述】:

我有一个关于河内塔的简单游戏,目前在终端运行。它允许玩家在终端输入他的轮到并输出可视化到终端。

我的任务是制作一个烧瓶应用程序,该应用程序将打开一个 html 页面,其中一个 JS 脚本将轮询服务器以获取有关游戏的信息,并将从终端到网页的可视化加倍。

我的问题是游戏和烧瓶都有一个主循环,如果我依次运行它们,它们将无法并行工作。

所以我需要游戏在终端运行,玩家在终端轮流,但我需要网络服务器来获取游戏状态并显示它。

我的问题:我应该用什么来做这个?多处理线程?

假设我有一个烧瓶视图

from game import game

@app.route('/get_updates')
def get_updates():
   return flask.jsonify(game.instance().board)

如果烧瓶和游戏在不同的线程中运行,它会如何工作?如何从另一个线程获取游戏对象?

【问题讨论】:

  • 你可以启动另一个线程并在其中运行 Flask 服务器,并不难。
  • 多线程是最简单的解决方案。您可以在不同的线程之间共享变量、对象。您将游戏对象作为烧瓶线程构造函数的参数

标签: python flask


【解决方案1】:

在不同的线程中运行你的游戏会更好吗?

import threading
import time
from flask import Flask, render_template

class myGame(threading.Thread):
    def __init__(self, threadID, name, counter):
        threading.Thread.__init__(self)
        self.board = 1

    def run(self):
        pass


app = Flask(__name__)
game = myGame()

@app.route('/get_updates') 
def get_updates(): 
    return flask.jsonify(game.board)

if __name__ == "__main__":
    game.start()
    app.run(port=81, host='0.0.0.0', debug=False, use_reloader=False)

【讨论】:

    【解决方案2】:

    只需启动另一个线程并在其中运行 Flask 服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      相关资源
      最近更新 更多