AppEngine应用在查询响应标头时查询BigQuery :: [错误]上游过早关闭连接

时间:2018-08-23 09:56:38

标签: python-3.x google-app-engine google-bigquery

我的应用程序:

  • STEP1 :获取发布给pubsusb主题的BQ job_id。
  • STEP2 :检查job.state是否已完成(大多数情况下已经完成!)
  • STEP3 :如果作业完成,则获取查询结果(60K行x50列,所有浮动数字)
  • STEP4 :处理查询结果数据并上传到Google Analytics(分析)(通过数据导入API)

在我的本地PC上一切正常。但是,在AppEngine Flexi环境(Python3并使用CLinet库)上运行时,我在 Step3 获取查询结果时遇到问题。

我尝试了3种方法,从日志中可以看到应用程序被卡住并返回502 BAD网关的这些步骤:

  • ver1:

    df = job.to_dataframe() //STUCK here

  • ver2:

    result = job.result() // SUCCESS

    rows = list(result) //STUCK here

  • ver3:

    `schema = [结果中的r的r.name] //成功

    `print(“ schema fetched:”,schema)//成功

    `pages = [result.pages页面中的页面] //此处粘贴

    `print(“已获取页面:”,len(pages))

Stackdriver提供以下日志:

  

[错误] 32#32:* 7316上游过早关闭连接,同时从上游读取响应头,客户端:216.XX.YY.ZZ,服务器:,请求:“ GET / ml_models / dev_poll_results / HTTP / 1.1”,上游:“ http://172.17.0.1:8080/ml_models/dev_poll_results/”,主持人:“ serato-big-query.appspot.com”

任何帮助,任何指导都是非常重要的。 enter image description here

更新

从Stackdriver Logging中,我看到BQ确实获得了datasets:tables:data请求。奇怪的是,protoPayload.serviceData.tableDataListRequest字段为空。通常,它用maxResults startRow字段填充。让人感到开会,在BQ和AppEngine应用之间交流大型结果是否会出现问题 enter image description here

0 个答案:

没有答案