首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次我加载我的网页时,RunTimeError

每次我加载我的网页时,RunTimeError
EN

Stack Overflow用户
提问于 2019-12-22 12:32:07
回答 1查看 113关注 0票数 0

今天,当我开始对我的网页进行编码时,它正常工作,但是我的css文件突然失效了。我的变化没有更新。读了一会儿之后,我读到我应该清理我的缓存。我这样做了,然后当我运行我的网页并单击任意按钮时,我会在我的控制台中看到下一个输出:

代码语言:javascript
复制
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

我的主文件如下:

代码语言:javascript
复制
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()

如果你需要更多关于任何文件的信息,请告诉我。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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__函数中,您会发现这一部分。

代码语言:javascript
复制
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

把这个加在底部。

代码语言:javascript
复制
except StopIteration:
    return

或者使用pass而不是return。这将重写同样的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59444223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档