今天,当我开始对我的网页进行编码时,它正常工作,但是我的css文件突然失效了。我的变化没有更新。读了一会儿之后,我读到我应该清理我的缓存。我这样做了,然后当我运行我的网页并单击任意按钮时,我会在我的控制台中看到下一个输出:
127.0.0.1:50860 - - [22/Dec/2019 13:22:20] "HTTP/1.1 POST /check-login" - 200 OK
127.0.0.1:50861 - - [22/Dec/2019 13:22:20] "HTTP/1.1 GET /static/css/swap.css" - 304 Not Modified
RuntimeError('generator raised StopIteration')
127.0.0.1:50860 - - [22/Dec/2019 13:22:20] "HTTP/1.1 GET /" - 200 OK
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/web/httpserver.py", line 239, in __iter__
raise StopIteration()
StopIteration
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/cheroot/server.py", line 1280, in communicate
req.respond()
File "/usr/local/lib/python3.7/site-packages/cheroot/server.py", line 1083, in respond
self.server.gateway(self).respond()
File "/usr/local/lib/python3.7/site-packages/cheroot/wsgi.py", line 145, in respond
for chunk in filter(None, response):
RuntimeError: generator raised StopIteration
127.0.0.1:50860 - - [22/Dec/2019 13:22:20] "HTTP/1.1 GET /static/css/swap.css" - 304 Not Modified
RuntimeError('generator raised StopIteration')
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/web/httpserver.py", line 239, in __iter__
raise StopIteration()
StopIteration
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/cheroot/server.py", line 1280, in communicate
req.respond()
File "/usr/local/lib/python3.7/site-packages/cheroot/server.py", line 1083, in respond
self.server.gateway(self).respond()
File "/usr/local/lib/python3.7/site-packages/cheroot/wsgi.py", line 145, in respond
for chunk in filter(None, response):
RuntimeError: generator raised StopIteration我的主文件如下:
import web
from Models import RegisterModel, LoginModel
web.config.debug = False
urls = (
'/', 'home',
'/login', 'login',
'/register', 'register',
'/postregistration', 'postRegistration',
'/check-login', 'checkLogin',
'/logout', 'logout'
)
TEMPLATE_PATH = './Views/Templates'
BASE_FILE = 'MainLayout'
app = web.application(urls, globals())
session = web.session.Session(app, web.session.DiskStore("sessions"), initializer={'user': None})
session_data = session._initializer
render = web.template.render(TEMPLATE_PATH, base=BASE_FILE, globals={'session': session_data, 'current_user': session_data["user"]})
# Classes/Routes
class home:
def GET(self):
return render.home()
class login:
def GET(self):
return render.login()
class checkLogin:
def POST(self):
data = web.input()
login_model = LoginModel.LoginModel()
isCorrect = login_model.check_user(data)
if isCorrect:
session_data["user"]=isCorrect
return isCorrect
return "error"
class logout:
def GET(self):
session['user'] = None
session_data['user'] = None
session.kill()
return "success"
class register:
def GET(self):
return render.register()
class postRegistration:
def POST(self):
data = web.input()
reg_model = RegisterModel.RegisterModel()
reg_model.insert_user(data)
return data.username
if __name__ == "__main__":
app.run()如果你需要更多关于任何文件的信息,请告诉我。
提前谢谢。
发布于 2019-12-22 12:59:51
类似的问题here。在python3.7中,StopIteration的规则发生了变化。
Python3.7中的所有代码都启用了
PEP 479,这意味着在coroutines和生成器中直接或间接引发的StopIteration异常被转换为RuntimeError异常。
您将需要使用try-除了在错误的地方,如上面的链接。
编辑
在您的代码中,似乎css没有更改,所以304没有修改StopIteration。
在./site-packages/web/httpserver.py中的__iter__函数中,您会发现这一部分。
def __iter__(self):
# ...
try:
path = self.translate_path(self.path)
etag = '"%s"' % os.path.getmtime(path)
client_etag = environ.get("HTTP_IF_NONE_MATCH")
self.send_header("ETag", etag)
if etag == client_etag:
self.send_response(304, "Not Modified")
self.start_response(self.status, self.headers)
return
except OSError:
pass # Probably a 404把这个加在底部。
except StopIteration:
return或者使用pass而不是return。这将重写同样的东西。
https://stackoverflow.com/questions/59444223
复制相似问题