2015-07-20 21 views
1

我试图运行自定义stript将静态文件上载到存储桶。运行GAE脚本时找不到服务“app_identity_service”的api代理

import os 
import sys 
sys.path.append("/tools/google_appengine") 
from google.appengine.ext import vendor 
from google.appengine.api import app_identity 
vendor.add('../libraries') 

import cloudstorage as gcs 

STATIC_DIR = '../dashboard/dist' 

def main(): 
    bucket_path = ''.join('/' + app_identity.get_default_gcs_bucket_name()) 

我一直在试图至今: - 初始化存根manuaIlly

def initialize_service_apis(): 
    from google.appengine.tools import dev_appserver 

    from google.appengine.tools.dev_appserver_main import ParseArguments 
    args, option_dict = ParseArguments(sys.argv) # Otherwise the option_dict isn't populated. 
    dev_appserver.SetupStubs('local', **option_dict) 

(从https://blairconrad.wordpress.com/2010/02/20/automated-testing-using-app-engine-service-apis-and-a-memcaching-memoizer/拍摄)

但这进口dev_appserver LIB时给我导入错误。

有什么办法可以解决这个问题吗? 我需要这个脚本进行自动部署过程。

回答

0

我对dev_appserver.SetupStubs()不熟悉,但在测试平台中运行单元测试时收到了相同的错误消息。在这种环境下,您必须明确地启用任何想要测试的服务的存根(请参阅docs)。

尤其初始化应用的身份存根解决我的问题:

from google.appengine.ext import testbed 

t = testbed.Testbed() 
t.init_app_identity_stub() 
0

No api proxy found for service <blah>错误消息通常表明尝试使用GAE标准ENV基础设施独立的脚本里,这是(在你的情况google.appengine下包)不好。请参阅GAE: AssertionError: No api proxy found for service "datastore_v3"

你有2种选择:

  • 保持代码但要执行一个GAE应用程序(如请求处理程序,例如),而不是作为一个独立的脚本
  • 下降GAE库和切换到专门用于独立脚本的库。在你的情况下,你正在寻找Cloud Storage Client Libraries。您可能还需要将access control调整为相应的GAE应用程序存储桶。
相关问题