2013-01-15 5 views
5

Geliştirme sırasında temel Flask sunucusunu kullanarak uygulamanızı çalıştırdığımda bu hatanın nedenini anlamaya çalışıyorum. Ben bu konuda başlatın:Arabirim Flask sunucu hatası: 'RuntimeError: Python nesnesini çağırırken maksimum yineleme derinliği aşıldı'

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

Bütün iyi ve kod devam vb yenilemek, ama sonra bir süre sonra tekrarlama hatası alıyorum ve Ctrl-C'ye sunucu var ve yeniden başlatın edeceğiz. Büyük bir anlaşma değil, her şimdi ve sonra başa çıkmak için biraz can sıkıcı olmak.

İşte nedenini belirlemek için kullanmaya çalıştı tam traceback, ama göze çarpan bir şey göremiyorum (muhtemelen werkzeug Cookie.py nasıl kullandığı ile ilgili bir şey?):

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 
+0

Github'da [burada] (https://github.com/pssdbt/flask-skeleton). Bunu dahil etmeliydim, ancak farklı uygulamalarda (hepsi buna dayanarak değil) şu ana kadar birkaç kez başıma gelmediği için yapılmadı. – jeffff

+0

Bunu da görüyorum. –

cevap

1

yana sizin developement işlemi sırasında oluşur, kullanmakta, sunucu başlamadan önce, yineleme sınırını artırabilir: bu etkileri var size iyi bir bilgiye sahip olmadıkça

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

Ancak, üretimde çok dikkatli ve muhtemelen değil kullanmalıdır.

Ref:

+0

Buna bir şans ver ve yardımcı olup olmadığına bak. Ben sadece bir runserver.py betiği ile çalışarak (temelde app.run (debug = True)), üretimde konuya girmedim. – jeffff