在我的应用程序中,通过发出请求来更改公共对象的状态,响应取决于状态.
class SomeObj():
def __init__(self, param):
self.param = param
def query(self):
self.param += 1
return self.param
global_obj = SomeObj(0)
@app.route('/')
def home():
flash(global_obj.query())
render_template('index.html')
Run Code Online (Sandbox Code Playgroud)
如果我在我的开发服务器上运行它,我希望得到1,2,3等等.如果同时向100个不同的客户提出请求,可能出现问题吗?预期的结果是100个不同的客户端每个都看到1到100之间的唯一数字.或者会发生这样的事情:
self.param增加1.self.param再次递增.由于只有两个客户端,预期结果为1和2,而不是2和3.跳过了一个数字.
当我扩展我的应用程序时,这会发生吗?我应该看一下全局变量的替代方案?
我想要做的只是从一个API显示第一个.该变量称为"firstevent",该值应显示在网页上.但是firstevent在def中,所以我把它改成一个全局变量,并希望它可以用于不同的函数.但它显示"NameError:全局名称'firstevent'未定义".这就是我在做的事情:
定义一个全局变量
global firstevent
Run Code Online (Sandbox Code Playgroud)
发送此变量一个随机值,它应该是 events['items'][1]['end']
firstevent = 1
Run Code Online (Sandbox Code Playgroud)
在网站上显示firstevent的价值.
@app.route("/")
def index():
return 'User %s' % firstevent
Run Code Online (Sandbox Code Playgroud)
我不确定现在发生了什么,也许这是一个范围问题?我在网上查了很多答案,但仍无法找到解决方案.
以下是详细信息(不是整个代码)
import os
# Retrieve Flask, our framework
# request module gives access to incoming request data
import argparse
import httplib2
import os
import sys
import json
from flask import Flask, request
from apiclient import discovery
from oauth2client import file
from oauth2client import client
from oauth2client import tools
from apiclient.discovery import build
from oauth2client.client import OAuth2WebServerFlow
import httplib2
global firstevent
app …Run Code Online (Sandbox Code Playgroud)