我正在忙着编写一个小型游戏服务器来试用Flask。游戏通过REST向用户展示API。用户执行操作和查询数据很容易,但是我想在app.run()循环之外为“游戏世界”提供服务,以更新游戏实体等。鉴于Flask的实现如此简洁,我希望看看是否有Flask方式可以做到这一点。
你的其他线程必须从WSGI服务器调用的同一应用程序启动。
下面的示例创建一个后台线程,该线程每5秒执行一次,并处理Flask路由函数也可用的数据结构。
import threading
import atexit
from flask import Flask
POOL_TIME = 5 #Seconds
# variables that are accessible from anywhere
commonDataStruct = {}
# lock to control access to variable
dataLock = threading.Lock()
# thread handler
yourThread = threading.Thread()
def create_app():
app = Flask(__name__)
def interrupt():
global yourThread
yourThread.cancel()
def doStuff():
global commonDataStruct
global yourThread
with dataLock:
# Do your stuff with commonDataStruct Here
# Set the next thread to happen
yourThread = threading.Timer(POOL_TIME, doStuff, ())
yourThread.start()
def doStuffStart():
# Do initialisation stuff here
global yourThread
# Create your thread
yourThread = threading.Timer(POOL_TIME, doStuff, ())
yourThread.start()
# Initiate
doStuffStart()
# When you kill Flask (SIGTERM), clear the trigger for the next thread
atexit.register(interrupt)
return app
app = create_app()
从Gunicorn调用它,如下所示:
gunicorn -b 0.0.0.0:5000 --log-config log.conf --pid=app.pid myfile:app
我有一个flask web应用程序,它使用render_template如下所示。我需要在响应中添加一个Content-Security-Policy作为额外的http响应头。我试着按照方法走,但都失败了,给了我500。 1. 在终端上,当我以localhost身份访问web应用程序时,会看到以下内容:3001 127.0.0.1--[06/APR/2015 01:45:01]“GET/HTTP/
我想将我的添加到列中,这样我就可以在加载更多项目时在这个列表视图下面添加CircularProgressIndex ator。我使用了如何在Flutter中将列表视图添加到列中的建议?因此我制作了结构列- 你能告诉我我做错了什么吗?这个构建了新的小部件,但它构建在另一个列上。也许这是错的?
问题内容: 我有一个前缀要添加到每条路线。现在,我在每个定义处都向路线添加了一个常量。有没有一种方法可以自动执行此操作? 问题答案: 答案取决于你如何为该应用程序提供服务。 安装在另一个WSGI容器中 假设你将在WSGI容器(mod_wsgi,uwsgi,gunicorn等)中运行此应用程序;你实际上需要将该应用程序作为该WSGI容器的子部分挂载在该前缀处(任何讲WSGI的东西都可以使用),并将A
问题内容: 我想在JDialog中添加诸如TextField,Button等组件。 问题答案: 1)首先创建一个Jpanel 2)将组件添加到该JPanel 3)创建JDialog 4)将JPanel添加到JDialog
如果作为参数输入,则不应该将其添加到arrayList中,我正在使用BlueJ编译器,并且我已经尝试了几种方法对其进行编码,但仍然无效。 下面是我的方法: 还试过这样的办法: 也试过这个: 并尝试了这个: 我相信我已经用尽了我能想到的所有方法,并在网上做了研究,但似乎不能找到一个有效的答案,我的问题。上面的方法要么添加null,要么不添加null并且不添加非null的新car参数。似乎不知道如何不
我正在尝试创建一个新的JavaFX项目。我已经安装了1.8,我相信其中包括javafx包。在终端中运行将显示。我从这里安装的 当我转到时,选择的版本是。列表中没有版本。如果选择add new,并导航到,我会看到: 没有版本。 如何将IntelliJ更新到用户版本?