1

私はこのチュートリアルに従っています

https://developers.google.com/bigquery/docs/authorization#service-accounts-appengine

これが私のmain.pyコードです

import httplib2

from apiclient.discovery import build
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from oauth2client.appengine import AppAssertionCredentials

# BigQuery API Settings
SCOPE = 'https://www.googleapis.com/auth/bigquery'
PROJECT_NUMBER = 'XXXXXXXXXX' # REPLACE WITH YOUR Project ID

# Create a new API service for interacting with BigQuery
credentials = AppAssertionCredentials(scope=SCOPE)
http = credentials.authorize(httplib2.Http())
bigquery_service = build('bigquery', 'v2', http=http)


class ListDatasets(webapp.RequestHandler):
  def get(self):
    datasets = bigquery_service.datasets()
    listReply = datasets.list(projectId=PROJECT_NUMBER).execute()
    self.response.out.write('Dataset list:')
    self.response.out.write(listReply)


application = webapp.WSGIApplication(
                                     [('/listdatasets(.*)', ListDatasets)],
                                     debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()

ここに私のapp.yamlファイルコードがあります

application: bigquerymashup
version: 1
runtime: python
api_version: 1

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: main.py

はい、Google APIコンソールのチームタブにアプリエンジンサービスアカウント名を追加し、権限を編集できます。アプリをアップロードしてリンクにアクセスしようとすると、

Oops! This link appears to be broken.

以前にこれをローカルで実行し、リンクを使用してアクセスしようとしました。次に、localhost:8080ローカルで実行しているとエラーが発生する可能性があると考えたので、コードをにアップロードしました

http://bigquerymashup.appspot.com/

それでもエラーが発生します。

編集: App.yaml を更新

application: bigquerymashup
version: 1
runtime: python
api_version: 1

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: main.py

- url: /listdatasets
  script: main.py

しかし、別のエラーが発生します

Traceback (most recent call last): File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp2‌​5.py", line 710, in call handler.get(*groups) TypeError: get() takes exactly 1 argument (2 given) 
4

1 に答える 1

1

検索しようとしている URL に一致するスクリプト ハンドラーを定義する必要があります。

試す:http://[your_app_id_here].appspot.com/listdatasets

ハンドラーの詳細については、こちらをご覧ください。

于 2012-11-12T10:58:38.470 に答える