У меня проблема, когда я пытаюсь выполнить свой скрипт.py через приложение только из библиотеки "из google.cloud import bigquery", я пробую некоторые решения, но у меня не было пути успеха, я показываю вам сценарии, которые я использую для выполнения этого сценария.
Это мой сценарий:
import json
import datetime
import webapp2
from google.cloud import bigquery
from google.appengine.ext import vendor
vendor.add('lib')
filename = "example.json"
def date_format(time):
if time.find(".") != -1:
time = time[:time.find(".")]
date = datetime.datetime.strptime(time,"%Y-%m-%d %H:%M:%S")
return date.strftime("%Y%m%d")
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
with open(filename) as file:
array = []
jsonData = json.load(file)
d = str(date_format(jsonData['e']))
self.response.write('Hello AppEngine from script! :: '+d)
client = bigquery.Client()
QUERY = (
'SELECT field FROM `table` WHERE date='+d+' LIMIT 10'
)
query_job = client.query(QUERY)
rows = query_job.result()
for row in rows:
print(row.field)
app = webapp2.WSGIApplication([
('/', MainPage),
], debug=True)
Это мой app.yaml:
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: main.app
Это мои требования.txt:
google-api-python-client
google-cloud
У меня есть каталог lib с библиотекой bigquery: google_cloud_bigquery-1.24.0.dist-info. и другие библиотеки с google_cloud
Я не знаю, правильный ли мой код, потому что я видел некоторые решения, но что-нибудь помогло запустить скрипт с appengine.
Надеюсь, вы можете помочь мне, пожалуйста.
Это скрипт с python 3
import google.cloud.bigquery as bigquery
# [START gae_python37_app]
from flask import Flask
from google.appengine.ext import vendor
vendor.add('lib')
# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = Flask(__name__)
@app.route('/')
def hello():
"""Return a friendly HTTP greeting."""
client = bigquery.Client()
QUERY = (
'SELECT ev FROM `table` WHERE f="20200201" LIMIT 10'
)
query_job = client.query(QUERY)
rows = query_job.result()
for row in rows:
return row.ev
if __name__ == '__main__':
# This is used when running locally only. When deploying to Google App
# Engine, a webserver process such as Gunicorn will serve the app. This
# can be configured by adding an `entrypoint` to app.yaml.
app.run(host='127.0.0.1', port=8080, debug=True)
# [END gae_python37_app]