Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 &引用;“在应用程序上下文之外工作”;在带有Python远程API的Google应用程序引擎中_Python 2.7_Google App Engine_Remoteapi - Fatal编程技术网

Python 2.7 &引用;“在应用程序上下文之外工作”;在带有Python远程API的Google应用程序引擎中

Python 2.7 &引用;“在应用程序上下文之外工作”;在带有Python远程API的Google应用程序引擎中,python-2.7,google-app-engine,remoteapi,Python 2.7,Google App Engine,Remoteapi,我在Google App Engine上部署了一个简单的项目,该项目正在那里运行。以前,我可以通过远程API控制台从数据存储中获取用户列表,但现在这已经不起作用了。要启动远程API控制台,我将通过以下方式进行连接(从项目目录运行): 我发现加载所有模块的最简单方法是运行: s~project> help() help>modules help>quit 之后,我尝试获取用户列表: s~project> from app.models import User s~proj

我在Google App Engine上部署了一个简单的项目,该项目正在那里运行。以前,我可以通过远程API控制台从数据存储中获取用户列表,但现在这已经不起作用了。要启动远程API控制台,我将通过以下方式进行连接(从项目目录运行):

我发现加载所有模块的最简单方法是运行:

s~project> help()
help>modules
help>quit
之后,我尝试获取用户列表:

s~project> from app.models import User
s~project> User.query().fetch()
最后一行的结果如下:

WARNING:root:suspended generator _run_to_list(query.py:964) raised RuntimeError(working outside of application context)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/krasen/Programs/+/google_appengine_PYTHON_SDK/google/appengine/ext/ndb/utils.py", line 142, in positional_wrapper
    return wrapped(*args, **kwds)
  File "/home/krasen/Programs/+/google_appengine_PYTHON_SDK/google/appengine/ext/ndb/query.py", line 1187, in fetch
    return self.fetch_async(limit, **q_options).get_result()
  File "/home/krasen/Programs/+/google_appengine_PYTHON_SDK/google/appengine/ext/ndb/tasklets.py", line 325, in get_result
    self.check_success()
  File "/home/krasen/Programs/+/google_appengine_PYTHON_SDK/google/appengine/ext/ndb/tasklets.py", line 368, in _help_tasklet_along
    value = gen.throw(exc.__class__, exc, tb)
  File "/home/krasen/Programs/+/google_appengine_PYTHON_SDK/google/appengine/ext/ndb/query.py", line 964, in _run_to_list
    batch = yield rpc
  File "/home/krasen/Programs/+/google_appengine_PYTHON_SDK/google/appengine/ext/ndb/tasklets.py", line 454, in _on_rpc_completion
    result = rpc.get_result()
  File "/home/krasen/Programs/+/google_appengine_PYTHON_SDK/google/appengine/api/apiproxy_stub_map.py", line 613, in get_result
    return self.__get_result_hook(self)
  File "/home/krasen/Programs/+/google_appengine_PYTHON_SDK/google/appengine/datastore/datastore_query.py", line 3014, in __query_result_hook
    self.__results = self._process_results(query_result.result_list())
  File "/home/krasen/Programs/+/google_appengine_PYTHON_SDK/google/appengine/datastore/datastore_query.py", line 3047, in _process_results
    for result in results]
  File "/home/krasen/Programs/+/google_appengine_PYTHON_SDK/google/appengine/datastore/datastore_rpc.py", line 185, in pb_to_query_result
    return self.pb_to_entity(pb)
  File "/home/krasen/Programs/+/google_appengine_PYTHON_SDK/google/appengine/ext/ndb/model.py", line 662, in pb_to_entity
    entity = modelclass._from_pb(pb, key=key, set_key=False)
  File "/home/krasen/Programs/+/google_appengine_PYTHON_SDK/google/appengine/ext/ndb/model.py", line 3119, in _from_pb
    ent = cls()
  File "app/models.py", line 68, in __init__
    if self.email == current_app.config['MAIL_ADMIN']:
  File "/home/krasen/Programs/workspacePycharm/0010_1user_profile/venv/local/lib/python2.7/site-packages/werkzeug/local.py", line 338, in __getattr__
    return getattr(self._get_current_object(), name)
  File "/home/krasen/Programs/workspacePycharm/0010_1user_profile/venv/local/lib/python2.7/site-packages/werkzeug/local.py", line 297, in _get_current_object
    return self.__local()
  File "/home/krasen/Programs/workspacePycharm/0010_1user_profile/venv/local/lib/python2.7/site-packages/flask/globals.py", line 34, in _find_app
    raise RuntimeError('working outside of application context')
RuntimeError: working outside of application context
警告:root:suspended generator\u run\u to\u list(query.py:964)引发运行时错误(在应用程序上下文之外工作)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/home/krasen/Programs/+/google\u appengine\u PYTHON\u SDK/google/appengine/ext/ndb/utils.py”,第142行,位置包装
已包装退货(*args,**kwds)
文件“/home/krasen/Programs/+/google\u appengine\u PYTHON\u SDK/google/appengine/ext/ndb/query.py”,第1187行,在fetch中
返回self.fetch\u async(限制,**q\u选项)。获取结果()
文件“/home/krasen/Programs/+/google\u appengine\u PYTHON\u SDK/google/appengine/ext/ndb/tasklets.py”,第325行,在get\u result中
self.check_success()
文件“/home/krasen/Programs/+/google\u appengine\u PYTHON\u SDK/google/appengine/ext/ndb/tasklets.py”,第368行,在“help\u tasklet\u”中
值=发电机推力(exc.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
文件“/home/krasen/Programs/+/google\u appengine\u PYTHON\u SDK/google/appengine/ext/ndb/query.py”,第964行,在“运行到”列表中
批次=成品率
文件“/home/krasen/Programs/+/google\u-appengine\u-PYTHON\u-SDK/google/appengine/ext/ndb/tasklets.py”,第454行,在rpc完成时
result=rpc.get_result()
文件“/home/krasen/Programs/+/google\u appengine\u PYTHON\u SDK/google/appengine/api/apiproxy\u stub\u map.py”,第613行,在get\u result中
返回self.\u获取\u结果\u挂钩(self)
文件“/home/krasen/Programs/+/google\u appengine\u PYTHON\u SDK/google/appengine/datastore/datastore\u query.py”,第3014行,在查询结果钩子中
self.\u results=self.\u process\u results(查询\u result.result\u列表())
文件“/home/krasen/Programs/+/google\u appengine\u PYTHON\u SDK/google/appengine/datastore/datastore\u query.py”,第3047行,在处理结果中
以获取结果]
文件“/home/krasen/Programs/+/google\u appengine\u PYTHON\u SDK/google/appengine/datastore/datastore\u rpc.py”,第185行,在pb\u to\u query\u结果中
将self.pb_返回给_实体(pb)
文件“/home/krasen/Programs/+/google\u appengine\u PYTHON\u SDK/google/appengine/ext/ndb/model.py”,第662行,在pb\u to\u实体中
实体=模型类。\来自\u pb(pb,key=key,set\u key=False)
文件“/home/krasen/Programs/+/google\u appengine\u PYTHON\u SDK/google/appengine/ext/ndb/model.py”,第3119行,位于
ent=cls()
文件“app/models.py”,第68行,在__
如果self.email==当前应用程序配置['MAIL\u ADMIN']:
文件“/home/krasen/Programs/workspacePycharm/0010_1user_profile/venv/local/lib/python2.7/site packages/werkzeug/local.py”,第338行,位于__
返回getattr(self.\u get\u current\u object(),name)
文件“/home/krasen/Programs/workspacePycharm/0010_1user_profile/venv/local/lib/python2.7/site packages/werkzeug/local.py”,第297行,在当前对象中
返回self.\uuu local()
文件“/home/krasen/Programs/workspacePycharm/0010_1user_profile/venv/local/lib/python2.7/site packages/flask/globals.py”,第34行,在“查找”应用程序中
引发运行时错误('在应用程序上下文之外工作')
运行时错误:在应用程序上下文之外工作
我对python非常陌生。我发现了,但无法理解如何在应用程序上下文中开始工作

我在linux上尝试了python版本:

  • 2.7.6(在干净安装的linux上)
  • 2.7.9
我已尝试使用google app engine SDK版本:

  • 1.9.17
  • 1.9.23
  • 1.9.24

    • 问题出在用户类本身。我有:

      def __init__(self, **kwargs):
              super(User, self).__init__(**kwargs)
              #  FLASKY_ADMIN configuration variable, so as soon as that email address appears in a registration request it can be given the correct role
              if self.role is None:
                  print ("there is no role for this user")
                  if self.email == current_app.config['MAIL_ADMIN']:
                      self.role = ndb.Key('Role', 'administrator')
      
      有问题的一行是这一行:

      if self.email == current_app.config['MAIL_ADMIN']:
      

      我不知道如何处理这一行,所以我删除了它,现在检索到了用户。

      问题出在用户类本身。我有:

      def __init__(self, **kwargs):
              super(User, self).__init__(**kwargs)
              #  FLASKY_ADMIN configuration variable, so as soon as that email address appears in a registration request it can be given the correct role
              if self.role is None:
                  print ("there is no role for this user")
                  if self.email == current_app.config['MAIL_ADMIN']:
                      self.role = ndb.Key('Role', 'administrator')
      
      有问题的一行是这一行:

      if self.email == current_app.config['MAIL_ADMIN']:
      

      我不知道如何处理这一行,因此我已将其删除,现在用户已被检索。

      您使用的是哪个版本的SDK?您能否运行?请确保使用?1.9.17、1.9.23、1.9.24(最新版本)。一切都不起作用。我认为这不是来自python SDK,因为一个月前它与1.9.17一起工作可能没有关系,但我已经将我的linux kubuntu升级到plasma 5.2,可能有新的python软件包。您的系统上运行的是什么版本的python?也就是说,
      python-V
      的输出是什么?krasen@krasen-Lenovo-Y50-70:~$python-V python 2.7.9您正在使用哪个版本的SDK?您能否运行?请确保使用?1.9.17、1.9.23、1.9.24(最新版本)。一切都不起作用。我认为这不是来自python SDK,因为一个月前它与1.9.17一起工作可能没有关系,但我已经将我的linux kubuntu升级到plasma 5.2,可能有新的python软件包。您的系统上运行的是什么版本的python?也就是说,
      python-V
      的输出是什么?krasen@krasen-Lenovo-Y50-70:~$python-V python 2.7.9您解决问题的方式创建了一个新问题,因为您的源代码中现在有管理员凭据。对于解决方案,请参见关于app.app_context()的
      详细信息:好的,这是一个旧的解决方案,我现在要说的是真正的问题是Flask如何访问某些内容,以及没有Flask context如何无法访问这些内容。我忘记了这个问题,上面的链接是正确的。谢谢您解决问题的方法创建了一个新问题,因为您的源代码中现在有管理员凭据。有关解决方案,请参见app.app\u context()的
      详细信息。
      这里:好的,这是旧的,我现在要说的是真实的