我的应用程序创建并发布其类型的数据,基本上它是对我们的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)
**