我试图获取网页的网址并将其存储为变量,以便可以在单独的python程序中使用该变量。
我是flask的新手,但是我很确定下面的注释代码只能在本地运行...我想不出一种创建全局变量的方法。
import random
from io import BytesIO
from flask import Flask, make_response,Response,request
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
import matplotlib.pyplot as plt
app = Flask(__name__)
@app.route('/')
def plot():
fig, ax = plt.subplots(1,1,figsize=(16,5))
ax.plot(range(100), [random.randint(1, 50) for x in range(100)])
canvas = FigureCanvas(fig)
output = BytesIO()
canvas.print_png(output)
response = make_response(output.getvalue())
response.mimetype = 'image/png'
return response
# var = request.root_url
if __name__ == '__main__':
app.run(debug=True)
编辑:主持人,正如我所说的,我想在另一个程序中使用该变量。不一定在烧瓶页面之间。嗯,这不是重复的。
答案 0 :(得分:1)
在flask应用程序中,您有一个Flask服务器,该服务器具有多个线程并处理请求。如果您创建一个全局变量,并尝试在不同的位置使用它,那么图片中会出现很多东西(锁,互斥锁等)。
问题是您不能轻易控制将对全局变量起作用的线程和进程,这也是一种不好的做法。这也会显示出意外的结果。
所有请求应始终相互独立,并且应为无状态。使用数据库或缓存系统(Memcache,Flask-Cache),该系统将为您处理状态(而不是全局变量)。这似乎是一项开销,但它是做事的最佳简单方法。
这些文章将帮助您使用flask实现缓存数据: