1

我的应用程序创建并发布数据到它的种类,基本上它对我们的 PAAS 应用程序进行 Web 服务调用,并从响应中创建这些种类并填充它们。

所以问题是如何创建动态索引,因为在这种情况下,它不使用 app cfg.py(实际上不会,因为它是用 java 编写的并且已经部署(w. Maven)。

然而,我发现了一个在线发布的解决方案,即使用 python,所以我的想法是托管一个 python 应用程序,其唯一目的是创建索引。

但是,上述解决方案对我不起作用。当我尝试从 python 应用程序连接时,它返回“缺少所需的标头”,或者如果我尝试在 java 中连接,则找不到 url。请注意,我在 python 版本中使用 SACSID,在 java 版本中使用 OAuth。

我找不到在线记录的 api,当我尝试询问帖子的作者时,帖子永远不会通过。

请看这个:它看起来对你吗?那个api仍然可用吗?

http://rahulswackyworld.blogspot.com/2010/03/dynamic-indexes-with-google-app-engine.html

我的代码。注意我做了一些改变来使用 UrlFetch

 from google.appengine.api import users

 from google.appengine.tools import appengine_rpc

 import webapp2

 import urllib

 from google.appengine.api import urlfetch


 #START MY STUFF

 class MainPage(webapp2.RequestHandler):

    def get(self):
        host = 'appengine.google.com'
        source = 'iristest-publicview.appspot.com'

        def auth_function():
            return ('<A valid admin username>','<A valid password')

        rpc_server = appengine_rpc.HttpRpcServer(host, auth_function, 'Python 2.7', source)

        #Authenticate
        rpc_server._Authenticate();

        if rpc_server.authenticated == True:
            print 'Your Authentication Was Successful.'

            for cookie in rpc_server.cookie_jar:
                if cookie.name and cookie.name == 'SACSID':
                    print 'Authentication Token Obtained (%s => %s)' % (cookie.name, cookie.value)

        #index_payload is description of your indexes in YAML - This can be generated in various different ways.
        form_fields = '{ indexes:\n kind:< THE KIND I JUST CREATED DYNAMICALLY > \n properties: \n - name:extId \n direction:asc&app_id=< MY APP'S ID >&version=6 }'

        form_data = urllib.quote_plus(form_fields)

        url = 'https://appengine.google.com/api/datastore/index/add'

        result = urlfetch.fetch(url=url,
            payload=form_data,
            method=urlfetch.POST,
            headers={'Content-Type': 'application/x-www-form-urlencoded', 'Cookie': cookie.value, 'Timeout': 60000, 'X-Same-Domain': '1' })

        print result.content

        print 'Uploading Index Successful'

        #END MY STUFF

    application = webapp2.WSGIApplication([
        ('/', MainPage),
    ], debug=True)

**

4

0 回答 0