5

開発中に基本的な Flask サーバーを使用してアプリを実行すると、このエラーの原因を突き止めようとしています。私はこれで始めます:

from myapp import app
app.run(debug=True, port=5001)

すべて順調で、コーディングや更新などを続けますが、しばらくすると再帰エラーが発生し、サーバーを Ctrl-C して再起動する必要があります。大したことではありませんが、時々対処しなければならないのは少し面倒です.

原因を特定するために使用しようとした完全なトレースバックを次に示しますが、目立ったものは何も表示されません (おそらく、werkzeug が Cookie.py を使用する方法と関係がありますか?):

Traceback (most recent call last):
  File "/Users/jeff/.virtualenvs/fmll/lib/python2.7/site-packages/flask/app.py", line 1701, in __call__
    return self.wsgi_app(environ, start_response)
  File "/Users/jeff/.virtualenvs/fmll/lib/python2.7/site-packages/werkzeug/wsgi.py", line 411, in __call__
    return self.app(environ, start_response)
  (last bit repeated a bunch - trimmed to fit in posting size requirements)
  File "/Users/jeff/.virtualenvs/fmll/lib/python2.7/site-packages/flask/app.py", line 1685, in wsgi_app
    with self.request_context(environ):
  File "/Users/jeff/.virtualenvs/fmll/lib/python2.7/site-packages/flask/ctx.py", line 274, in __enter__
    self.push()
  File "/Users/jeff/.virtualenvs/fmll/lib/python2.7/site-packages/flask/ctx.py", line 238, in push
    self.session = self.app.open_session(self.request)
  File "/Users/jeff/.virtualenvs/fmll/lib/python2.7/site-packages/flask/app.py", line 792, in open_session
    return self.session_interface.open_session(self, request)
  File "/Users/jeff/.virtualenvs/fmll/lib/python2.7/site-packages/flask/sessions.py", line 191, in open_session
    secret_key=key)
  File "/Users/jeff/.virtualenvs/fmll/lib/python2.7/site-packages/werkzeug/contrib/securecookie.py", line 309, in load_cookie
    data = request.cookies.get(key)
  File "/Users/jeff/.virtualenvs/fmll/lib/python2.7/site-packages/werkzeug/utils.py", line 77, in __get__
    value = self.func(obj)
  File "/Users/jeff/.virtualenvs/fmll/lib/python2.7/site-packages/werkzeug/wrappers.py", line 418, in cookies
    cls=self.dict_storage_class)
  File "/Users/jeff/.virtualenvs/fmll/lib/python2.7/site-packages/werkzeug/http.py", line 741, in parse_cookie
    cookie.load(header)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/Cookie.py", line 632, in load
    self.__ParseString(rawdata)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/Cookie.py", line 665, in __ParseString
    self.__set(K, rval, cval)
  File "/Users/jeff/.virtualenvs/fmll/lib/python2.7/site-packages/werkzeug/_internal.py", line 290, in _BaseCookie__set
    morsel = self.get(key, _ExtendedMorsel())
  File "/Users/jeff/.virtualenvs/fmll/lib/python2.7/site-packages/werkzeug/_internal.py", line 271, in __init__
    Morsel.__init__(self)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/Cookie.py", line 438, in __init__
    dict.__setitem__(self, K, "")
RuntimeError: maximum recursion depth exceeded while calling a Python object
4

1 に答える 1

1

開発プロセス中に発生するため、サーバーを起動する前に、次を使用して再帰制限を増やすことができます。

sys.setrecursionlimit(2000) # Choose the right figure for you here
# the value on my system is 1000 but this is platform-dependant

ただし、非常に慎重に使用する必要があり、その影響について十分な知識がない限り、おそらく本番環境では使用しないでください。

参照: http://docs.python.org/2/library/sys.html#sys.setrecursionlimit

于 2013-02-05T13:49:56.030 に答える