问题
I am trying to connect to the production datastore running on Google App Engine based on https://cloud.google.com/appengine/docs/python/tools/remoteapi#enabling_remote_api_access_in_your_app and AppEngine - Remote API returning 401 and too-many-auth and GAE: remote_api and Application Default Credentials and others.
This is my code to connect to Google App Engine Datastore
try:
import dev_appserver
dev_appserver.fix_sys_path()
except ImportError:
print('Please make sure the App Engine SDK is in your PYTHONPATH.')
raise
from google.appengine.ext.remote_api import remote_api_stub
import os
class RemoteApi:
@staticmethod
def use_remote_datastore():
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = "my-appengine-default-service-account.json"
project_id = 'myapp'
project_address = '{}.appspot.com'.format(project_id)
RemoteApi.connect2(project_address)
@staticmethod
def auth_func2():
return ('myuser@myemail.com','mypassword')
@staticmethod
def connect2(project_address):
remote_api_stub.ConfigureRemoteApiForOAuth(
project_address,
'/_ah/remote_api', secure=True)
But I am getting the error
NotSupportedOnThisPlatform
If I then set
secure=False
I then get
INFO 2016-10-01 23:35:32,727 client.py:546] Attempting refresh to obtain initial access_token
....
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/dummy_thread.py", line 73, in allocate_lock
return LockType()
RuntimeError: maximum recursion depth exceeded
I tried running
gcloud auth login
and creating a new service account which are both suggested here AppEngine - Remote API returning 401 and too-many-auth
Any ideas what I am doing wrong?
回答1:
You have mentioned auth_func2 but have not used it, according to remote_api updates without this information everytime with the oauth request, a connection is not possible.
change your connect2
method and try this -
@staticmethod
def connect2(project_address):
remote_api_stub.ConfigureRemoteApi(None, '/_ah/remote_api', auth_func2, project_address)
P.S - I am assuming your project_address
is right and without 'http://'
来源:https://stackoverflow.com/questions/39812525/getting-refreshing-due-to-a-401-when-trying-to-connect-using-remote-api