是否可以将网址存储为变量?

时间:2019-07-26 16:34:15

标签: python-3.x flask

我试图获取网页的网址并将其存储为变量,以便可以在单独的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)

编辑:主持人,正如我所说的,我想在另一个程序中使用该变量。不一定在烧瓶页面之间。嗯,这不是重复的。

1 个答案:

答案 0 :(得分:1)

在flask应用程序中,您有一个Flask服务器,该服务器具有多个线程并处理请求。如果您创建一个全局变量,并尝试在不同的位置使用它,那么图片中会出现很多东西(锁,互斥锁等)。

问题是您不能轻易控制将对全局变量起作用的线程和进程,这也是一种不好的做法。这也会显示出意外的结果。

所有请求应始终相互独立,并且应为无状态。使用数据库或缓存系统(Memcache,Flask-Cache),该系统将为您处理状态(而不是全局变量)。这似乎是一项开销,但它是做事的最佳简单方法。

这些文章将帮助您使用flask实现缓存数据:

  1. http://brunorocha.org/python/flask/using-flask-cache.html

  2. https://blog.ruanbekker.com/blog/2019/02/14/how-to-cache-data-with-python-flask/