0

非常に単純なアプリを Google App Engine から DigitalOcean に移行しています。

アプリが行うことはすべて、AJAX リクエストを処理し、BigQuery データセットにクエリを実行し、レスポンスを JSON として返すことだけです。

virtualenvでPython 2.7、最近のDjangoを実行しています。

Google Python Client API モジュール、OAuth2Client モジュールなどをインストールしました。

私の人生では、BigQuery に正常に接続するために必要なモジュールをインポートすることはできません。そのため、GAE でうまく機能した私のアプリは DigitalOcean では失敗します。

# this works fine
import oauth2client

しかしその後...

# this throws "global name 'appengine' is not defined"
credentials = appengine.AppAssertionCredentials(scope=_SCOPE)

私はappengineをインポートしようとしました:

from oauth2client import appengine

しかし、それはただ投げます

No module named appengine.api

virtualenv で lib/ dir を確認したところ、OAuth2Client があります。

これが私のvirtualenvのサイトパッケージディレクトリです:

(app_name)root@app_name:/webapps/app_name/lib/python2.7/site-packages# l
total 1104
drwxr-xr-x  2 root     root    4096 May  3 00:00 apiclient
drwxr-xr-x  2 root     root    4096 May  3 00:00 bigquery-2.0.17-py2.7.egg-info
-rw-r--r--  1 root     root   81577 May  3 00:00 bigquery_client.py
-rw-r--r--  1 root     root   86973 May  3 00:00 bigquery_client.pyc
-rw-r--r--  1 root     root   78673 May  3 00:00 bq.py
-rw-r--r--  1 root     root   76044 May  3 00:00 bq.pyc
drwxr-xr-x  3 root     root    4096 May  3 00:00 dateutil
drwxr-xr-x  2 root     root    4096 May  3 00:00 discovery
drwxrwxr-x 17 app_name users   4096 May  2 12:11 django
drwxrwxr-x  2 app_name users   4096 May  2 12:11 Django-1.6.4.dist-info
-rw-r--r--  1 root     root     239 May  2 23:20 easy-install.pth
-rw-rw-r--  1 app_name users    126 May  2 12:10 easy_install.py
-rw-rw-r--  1 app_name users    318 May  2 12:10 easy_install.pyc
-rw-r--r--  1 root     root  104236 May  3 00:00 gflags.py
-rw-r--r--  1 root     root   97904 May  3 00:00 gflags.pyc
-rw-r--r--  1 root     root    6977 May  3 00:00 gflags_validators.py
-rw-r--r--  1 root     root    7771 May  3 00:00 gflags_validators.pyc
drwxr-xr-x  3 root     root    4096 May  3 00:00 google
drwxr-xr-x  2 root     root    4096 May  3 00:00 google_api_python_client-1.2-py2.7.egg-info
drwxr-xr-x  2 root     root    4096 May  3 00:00 google_apputils-0.4.0-py2.7.egg-info
-rw-r--r--  1 root     root     307 May  3 00:00 google_apputils-0.4.0-py2.7-nspkg.pth
drwxrwxr-x  6 app_name users   4096 May  2 12:13 gunicorn
drwxrwxr-x  2 app_name users   4096 May  2 12:13 gunicorn-18.0-py2.7.egg-info
drwxr-xr-x  4 root     root    4096 May  2 23:20 httplib2-0.9-py2.7.egg
drwxrwxr-x  2 app_name users   4096 May  2 12:10 _markerlib
drwxr-xr-x  3 root     root    4096 May  2 23:40 oauth2
drwxr-xr-x  2 root     root    4096 May  2 23:40 oauth2-1.5.211-py2.7.egg-info
drwxr-xr-x  2 root     root    4096 May  3 00:00 oauth2client
-rw-r--r--  1 root     root  111741 May  2 23:20 oauth2client-1.2-py2.7.egg
drwxrwxr-x  6 app_name users   4096 May  2 12:10 pip
drwxrwxr-x  2 app_name users   4096 May  2 12:10 pip-1.5.4.dist-info
-rw-rw-r--  1 app_name users  99605 May  2 12:10 pkg_resources.py
-rw-rw-r--  1 app_name users 106608 May  2 12:10 pkg_resources.pyc
drwxr-xr-x  2 root     root    4096 May  3 00:00 python_dateutil-1.5-py2.7.egg-info
drwxr-xr-x  2 root     root    4096 May  3 00:00 python_gflags-2.0-py2.7.egg-info
drwxr-xr-x  3 root     root    4096 May  3 00:00 pytz
drwxr-xr-x  2 root     root    4096 May  3 00:00 pytz-2014.2-py2.7.egg-info
drwxrwxr-x  2 app_name users   4096 May  2 12:22 setproctitle-1.1.8-py2.7.egg-info
-rwxrwxr-x  1 app_name users  53539 May  2 12:22 setproctitle.so
drwxrwxr-x  4 app_name users   4096 May  2 12:10 setuptools
drwxrwxr-x  2 app_name users   4096 May  2 12:10 setuptools-2.2.dist-info
drwxr-xr-x  3 root     root    4096 May  2 23:43 simplejson
drwxr-xr-x  2 root     root    4096 May  2 23:43 simple_json
drwxr-xr-x  2 root     root    4096 May  2 23:43 simple_json-1.1-py2.7.egg-info
drwxr-xr-x  2 root     root    4096 May  2 23:43 simplejson-3.4.1-py2.7.egg-info
-rw-r--r--  1 root     root   18568 May  3 00:00 table_formatter.py
-rw-r--r--  1 root     root   25967 May  3 00:00 table_formatter.pyc
drwxr-xr-x  2 root     root    4096 May  2 23:40 tests
drwxr-xr-x  2 root     root    4096 May  3 00:00 uritemplate

oauthclient2にアクセスすると、appengine.py が表示されます。

(app_name)root@readrboard-events:/webapps/app_name/lib/python2.7/site-packages/oauth2client# l
total 388
-rw-r--r-- 1 root root  1044 May  3 00:00 anyjson.py
-rw-r--r-- 1 root root   536 May  3 00:00 anyjson.pyc
-rw-r--r-- 1 root root 32524 May  3 00:00 appengine.py
-rw-r--r-- 1 root root 37284 May  3 00:00 appengine.pyc
-rw-r--r-- 1 root root 44282 May  3 00:00 client.py
-rw-r--r-- 1 root root 48404 May  3 00:00 client.pyc
-rw-r--r-- 1 root root  4405 May  3 00:00 clientsecrets.py
-rw-r--r-- 1 root root  4440 May  3 00:00 clientsecrets.pyc
-rw-r--r-- 1 root root 10233 May  3 00:00 crypt.py
-rw-r--r-- 1 root root 11970 May  3 00:00 crypt.pyc
-rw-r--r-- 1 root root  3833 May  3 00:00 django_orm.py
-rw-r--r-- 1 root root  5482 May  3 00:00 django_orm.pyc
-rw-r--r-- 1 root root  3160 May  3 00:00 file.py
-rw-r--r-- 1 root root  4291 May  3 00:00 file.pyc
-rw-r--r-- 1 root root  3038 May  3 00:00 gce.py
-rw-r--r-- 1 root root  3207 May  3 00:00 gce.pyc
-rw-r--r-- 1 root root   213 May  3 00:00 __init__.py
-rw-r--r-- 1 root root   416 May  3 00:00 __init__.pyc
-rw-r--r-- 1 root root  3227 May  3 00:00 keyring_storage.py
-rw-r--r-- 1 root root  3892 May  3 00:00 keyring_storage.pyc
-rw-r--r-- 1 root root 11379 May  3 00:00 locked_file.py
-rw-r--r-- 1 root root 12863 May  3 00:00 locked_file.pyc
-rw-r--r-- 1 root root 13935 May  3 00:00 multistore_file.py
-rw-r--r-- 1 root root 16386 May  3 00:00 multistore_file.pyc
-rw-r--r-- 1 root root  5548 May  3 00:00 old_run.py
-rw-r--r-- 1 root root  4981 May  3 00:00 old_run.pyc
-rw-r--r-- 1 root root  8344 May  3 00:00 tools.py
-rw-r--r-- 1 root root  8723 May  3 00:00 tools.pyc
-rw-r--r-- 1 root root  5670 May  3 00:00 util.py
-rw-r--r-- 1 root root  5853 May  3 00:00 util.pyc
-rw-r--r-- 1 root root  3368 May  3 00:00 xsrfutil.py
-rw-r--r-- 1 root root  2928 May  3 00:00 xsrfutil.pyc

1) 私は何を間違っていますか? appengine がロードされないのはなぜですか?

2) クレデンシャルを Google API にアサートする別の方法も見つかりません。Crds を使用して Google API に接続し、Google App Engine 以外のサーバーから BigQuery にクエリを実行するにはどうすればよいですか?

4

1 に答える 1

0

「credentials = appengine.AppAssertionCredentials(scope=_SCOPE)」という行は、アプリ エンジンの外では機能しません。アプリ アサーション資格情報は、アプリ エンジンまたは dev_appserver で実行されているアプリでのみ使用できます。

アプリ アサーションを使用せずに認証情報を取得するには、Cloud Console ( https://developers.google.com/console/help/new/#serviceaccounts ) でサービス アカウントを作成し、oauth2client.client.SignedJwtAssertionCredentials を使用して取得します。これらの資格情報は、以前にアプリ アサーション資格情報を使用していた場所であればどこでも使用できます。

于 2014-05-05T15:28:56.573 に答える