谷歌应用引擎日志系统中的无限递归

3
在我开发的应用程序引擎应用程序的本地实例中,我遇到了日志系统的无限递归。不幸的是,由于问题出现在日志系统中,我无法看到错误消息。在谷歌应用程序引擎应用程序上,Python的“print”命令也无法正常工作,因此我无法显示任何有用的信息。
即使仅访问网站根目录,问题也是可见的。
这似乎是一个导入问题,但除此之外,日志系统应该正常工作,但却没有。
网站的部署版本正在工作,这让我想到可能是本地配置/系统问题。
我使用的是Python 2.7.2和CURRENT_VERSION_ID=1.1
以下是该错误的非常长的堆栈跟踪:
    --> --> -->
Traceback (most recent call last):
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2781, in _HandleRequest
    self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2669, in _Dispatch
    base_env_dict=env_dict)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 692, in Dispatch
    base_env_dict=base_env_dict)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1731, in Dispatch
    self._module_dict)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1631, in ExecuteCGI
    reset_modules = exec_script(config, handler_path, cgi_path, hook)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1319, in ExecuteOrImportScript
    exec module_code in script_module.__dict__
  File "C:\Program Files\Google\google_appengine\google\appengine\ext\admin\__init__.py", line 79, in <module>
    from google.appengine.ext.webapp import _template
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 676, in Decorate
    return func(self, *args, **kwargs)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 1858, in load_module
    return self.FindAndLoadModule(submodule, fullname, search_path)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 676, in Decorate
    return func(self, *args, **kwargs)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 1722, in FindAndLoadModule
    description)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 676, in Decorate
    return func(self, *args, **kwargs)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 1665, in LoadModuleRestricted
    description)
  File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\_template.py", line 37, in <module>
    from google.appengine.ext.webapp import template
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 676, in Decorate
    return func(self, *args, **kwargs)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 1858, in load_module
    return self.FindAndLoadModule(submodule, fullname, search_path)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 676, in Decorate
    return func(self, *args, **kwargs)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 1722, in FindAndLoadModule
    description)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 676, in Decorate
    return func(self, *args, **kwargs)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 1665, in LoadModuleRestricted
    description)
  File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\template.py", line 61, in <module>
    webapp._config_handle.django_setup()
  File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 153, in _django_setup
    __django_version_setup()
  File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 99, in __django_version_setup
    'http://code.google.com/appengine/docs/python/tools/'
  File "C:\Python27\lib\logging\__init__.py", line 1582, in warning
    root.warning(msg, *args, **kwargs)
  File "C:\Python27\lib\logging\__init__.py", line 1144, in warning
    self._log(WARNING, msg, args, **kwargs)
  File "C:\Python27\lib\logging\__init__.py", line 1250, in _log
    self.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "C:\Python27\lib\logging\__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 744, in handle
    self.emit(record)
  File "C:\Python27\lib\logging\__init__.py", line 870, in emit
    self.handleError(record)
  File "C:\Python27\lib\logging\__init__.py", line 797, in handleError
    None, sys.stderr)
  File "C:\Python27\lib\traceback.py", line 124, in print_exception
    _print(file, 'Traceback (most recent call last):')
  File "C:\Python27\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1492, in write
    logging.getLogger()._log(logging.ERROR, message, ())
  File "C:\Python27\lib\logging\__init__.py", line 1250, in _log
    self.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "C:\Python27\lib\logging\__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 744, in handle
    self.emit(record)
  File "C:\Python27\lib\logging\__init__.py", line 870, in emit
    self.handleError(record)
  File "C:\Python27\lib\logging\__init__.py", line 797, in handleError
    None, sys.stderr)
  File "C:\Python27\lib\traceback.py", line 124, in print_exception
    _print(file, 'Traceback (most recent call last):')
  File "C:\Python27\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1492, in write
    logging.getLogger()._log(logging.ERROR, message, ())
  File "C:\Python27\lib\logging\__init__.py", line 1250, in _log
    self.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "C:\Python27\lib\logging\__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 744, in handle
    self.emit(record)
  File "C:\Python27\lib\logging\__init__.py", line 870, in emit
    self.handleError(record)
  File "C:\Python27\lib\logging\__init__.py", line 797, in handleError
    None, sys.stderr)
  File "C:\Python27\lib\traceback.py", line 124, in print_exception
    _print(file, 'Traceback (most recent call last):')
  File "C:\Python27\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1492, in write
    logging.getLogger()._log(logging.ERROR, message, ())
  File "C:\Python27\lib\logging\__init__.py", line 1250, in _log
    self.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "C:\Python27\lib\logging\__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 744, in handle
    self.emit(record)
  File "C:\Python27\lib\logging\__init__.py", line 870, in emit
    self.handleError(record)
  File "C:\Python27\lib\logging\__init__.py", line 797, in handleError
    None, sys.stderr)
  File "C:\Python27\lib\traceback.py", line 124, in print_exception
    _print(file, 'Traceback (most recent call last):')
  File "C:\Python27\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1492, in write
    logging.getLogger()._log(logging.ERROR, message, ())
  File "C:\Python27\lib\logging\__init__.py", line 1250, in _log
    self.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "C:\Python27\lib\logging\__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 744, in handle
    self.emit(record)
  File "C:\Python27\lib\logging\__init__.py", line 870, in emit
    self.handleError(record)
  File "C:\Python27\lib\logging\__init__.py", line 797, in handleError
    None, sys.stderr)
  File "C:\Python27\lib\traceback.py", line 124, in print_exception
    _print(file, 'Traceback (most recent call last):')
  File "C:\Python27\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1492, in write
    logging.getLogger()._log(logging.ERROR, message, ())
  File "C:\Python27\lib\logging\__init__.py", line 1250, in _log
    self.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "C:\Python27\lib\logging\__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 744, in handle
    self.emit(record)
  File "C:\Python27\lib\logging\__init__.py", line 870, in emit
    self.handleError(record)
  File "C:\Python27\lib\logging\__init__.py", line 797, in handleError
    None, sys.stderr)
  File "C:\Python27\lib\traceback.py", line 124, in print_exception
    _print(file, 'Traceback (most recent call last):')
  File "C:\Python27\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1492, in write
    logging.getLogger()._log(logging.ERROR, message, ())
  File "C:\Python27\lib\logging\__init__.py", line 1250, in _log
    self.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "C:\Python27\lib\logging\__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 744, in handle
    self.emit(record)
  File "C:\Python27\lib\logging\__init__.py", line 870, in emit
    self.handleError(record)
  File "C:\Python27\lib\logging\__init__.py", line 797, in handleError
    None, sys.stderr)
  File "C:\Python27\lib\traceback.py", line 124, in print_exception
    _print(file, 'Traceback (most recent call last):')
  File "C:\Python27\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1492, in write
    logging.getLogger()._log(logging.ERROR, message, ())
  File "C:\Python27\lib\logging\__init__.py", line 1250, in _log
    self.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "C:\Python27\lib\logging\__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 744, in handle
    self.emit(record)
  File "C:\Python27\lib\logging\__init__.py", line 870, in emit
    self.handleError(record)
  File "C:\Python27\lib\logging\__init__.py", line 797, in handleError
    None, sys.stderr)
  File "C:\Python27\lib\traceback.py", line 124, in print_exception
    _print(file, 'Traceback (most recent call last):')
  File "C:\Python27\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1492, in write
    logging.getLogger()._log(logging.ERROR, message, ())
  File "C:\Python27\lib\logging\__init__.py", line 1250, in _log
    self.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "C:\Python27\lib\logging\__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 744, in handle
    self.emit(record)
  File "C:\Python27\lib\logging\__init__.py", line 870, in emit
    self.handleError(record)
  File "C:\Python27\lib\logging\__init__.py", line 797, in handleError
    None, sys.stderr)
  File "C:\Python27\lib\traceback.py", line 124, in print_exception
    _print(file, 'Traceback (most recent call last):')
  File "C:\Python27\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1492, in write
    logging.getLogger()._log(logging.ERROR, message, ())
  File "C:\Python27\lib\logging\__init__.py", line 1250, in _log
    self.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "C:\Python27\lib\logging\__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 744, in handle
    self.emit(record)
  File "C:\Python27\lib\logging\__init__.py", line 870, in emit
    self.handleError(record)
  File "C:\Python27\lib\logging\__init__.py", line 797, in handleError
    None, sys.stderr)
  File "C:\Python27\lib\traceback.py", line 124, in print_exception
    _print(file, 'Traceback (most recent call last):')
  File "C:\Python27\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1492, in write
    logging.getLogger()._log(logging.ERROR, message, ())
  File "C:\Python27\lib\logging\__init__.py", line 1250, in _log
    self.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "C:\Python27\lib\logging\__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 744, in handle
    self.emit(record)
  File "C:\Python27\lib\logging\__init__.py", line 870, in emit
    self.handleError(record)
  File "C:\Python27\lib\logging\__init__.py", line 797, in handleError
    None, sys.stderr)
  File "C:\Python27\lib\traceback.py", line 124, in print_exception
    _print(file, 'Traceback (most recent call last):')
  File "C:\Python27\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1492, in write
    logging.getLogger()._log(logging.ERROR, message, ())
  File "C:\Python27\lib\logging\__init__.py", line 1250, in _log
    self.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "C:\Python27\lib\logging\__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 744, in handle
    self.emit(record)
  File "C:\Python27\lib\logging\__init__.py", line 870, in emit
    self.handleError(record)
  File "C:\Python27\lib\logging\__init__.py", line 797, in handleError
    None, sys.stderr)
  File "C:\Python27\lib\traceback.py", line 124, in print_exception
    _print(file, 'Traceback (most recent call last):')
  File "C:\Python27\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1492, in write
    logging.getLogger()._log(logging.ERROR, message, ())
  File "C:\Python27\lib\logging\__init__.py", line 1250, in _log
    self.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "C:\Python27\lib\logging\__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 744, in handle
    self.emit(record)
  File "C:\Python27\lib\logging\__init__.py", line 870, in emit
    self.handleError(record)
  File "C:\Python27\lib\logging\__init__.py", line 797, in handleError
    None, sys.stderr)
  File "C:\Python27\lib\traceback.py", line 124, in print_exception
    _print(file, 'Traceback (most recent call last):')
  File "C:\Python27\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1492, in write
    logging.getLogger()._log(logging.ERROR, message, ())
  File "C:\Python27\lib\logging\__init__.py", line 1250, in _log
    self.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "C:\Python27\lib\logging\__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 744, in handle
    self.emit(record)
  File "C:\Python27\lib\logging\__init__.py", line 870, in emit
    self.handleError(record)
  File "C:\Python27\lib\logging\__init__.py", line 797, in handleError
    None, sys.stderr)
  File "C:\Python27\lib\traceback.py", line 124, in print_exception
    _print(file, 'Traceback (most recent call last):')
  File "C:\Python27\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1492, in write
    logging.getLogger()._log(logging.ERROR, message, ())
  File "C:\Python27\lib\logging\__init__.py", line 1250, in _log
    self.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 1260, in handle
    self.callHandlers(record)
  File "C:\Python27\lib\logging\__init__.py", line 1300, in callHandlers
    hdlr.handle(record)
  File "C:\Python27\lib\logging\__init__.py", line 744, in handle
    self.emit(record)
  File "C:\Python27\lib\logging\__init__.py", line 870, in emit
    self.handleError(record)
  File "C:\Python27\lib\logging\__init__.py", line 797, in handleError
    None, sys.stderr)
  File "C:\Python27\lib\traceback.py", line 124, in print_exception
    _print(file, 'Traceback (most recent call last):')
  File "C:\Python27\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1492, in write
    logging.getLogger()._log(logging.ERROR, message, ())
  File "C:\Python27\lib\logging\__init__.py", line 1249, in _log
    record = self.makeRecord(self.name, level, fn, lno, msg, args, exc_info, func, extra)
  File "C:\Python27\lib\logging\__init__.py", line 1223, in makeRecord
    rv = LogRecord(name, level, fn, lno, msg, args, exc_info, func)
  File "C:\Python27\lib\logging\__init__.py", line 266, in __init__
    self.levelname = getLevelName(level)
  File "C:\Python27\lib\logging\__init__.py", line 167, in getLevelName
    return _levelNames.get(level, ("Level %s" % level))
RuntimeError: maximum recursion depth exceeded while getting the str of an object

以下是main.py中的导入列表:
from google.appengine.ext import webapp

import fix_path
import sys
import os
import urllib
import urllib2
import pprint
import logging
import cgi
import random
import Cookie
import datetime
import time
import urlparse
import urllib2
import urllib, cStringIO
import hashlib
import copy

from urllib import urlretrieve
from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
from google.appengine.ext.webapp import template
from google.appengine.api import users
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
from google.appengine.dist import use_library
from google.appengine.api import memcache
from django.utils import simplejson
from gaesessions import get_current_session

from myapp.models import *
from myapp.models import sequence_selection as models_sequence_selection
from myapp.sequence_selection import utils as sequence_selection_utils
from myapp.models import video 
from myapp.models.video import * 
from myapp.models.song import * 
from myapp.models.flashified import *
from myapp.music_recommendation import get_song_recommendations,get_song_recommendations_learning_data,learn_song,learn_song_from_video

from myapp.core import is_number
from myapp import mailing
from myapp import search
from myapp import motif
from myapp import retrieve_instagram
from myapp import coords_distance
from myapp import performancetest

from google.appengine.api import mail
from google.appengine.api import images

实际上,将应用程序的目录重命名并通过不同端口通过Google App Engine Launcher重新导入解决了我的问题,但可能并没有解决该错误。

1
你能否发布一段你的代码摘录? - Sebastian Kreft
实际上,main.py 是一个有数千行的巨大文件。我也不确定它是否是问题的源头,因为递归是在日志记录模块中进行的。而且似乎我的最近更改与错误无关,因为我已经撤消了它们,但错误仍然存在。 - fstab
1
您发出的回溯信息表明问题源于导入模块时 (从 myapp.music_recommendation 导入 get_song_recommendations、get_song_recommendations_learning_data、learn_song 和 learn_song_from_video,以及从 myapp.models.song 导入 Song)。请问您使用的是哪个 Python 版本和 dev_appserver? - Sebastian Kreft
你可以使用 logger.info('Some debug info') 来调试任何东西,并在日志输出中查看结果,而不是使用 print。在 GAE 中不要使用 print。 - Lipis
1
这是一个有趣的问题。看起来日志记录代码遇到了错误并尝试记录错误消息。这很可能是SDK中的一个错误,但很难跟踪,因为您似乎没有一个简单可重现的案例供我尝试。如果再次发生这种情况,希望您能将应用程序缩减到最小的代码量,仍然触发该问题,然后在App Engine跟踪器中提交错误报告。 - Guido van Rossum
显示剩余4条评论
1个回答

1

你需要上传相关的源代码才能得到真正的答案,就像@skreft所说的那样。

至于日志记录,使用import logging,然后使用logging.info()来帮助定位问题。

我建议现在先注释掉日志记录代码,看看你的堆栈跟踪会显示什么。如果没有错误,请逐步添加日志记录代码,直到找到错误为止。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接