在Cloud Run向部署的服务发送请求时发生Tableau登录错误



我在Google Cloud Run上使用Flask服务为Tableau Server开发了一个自定义供应服务。我使用docker容器将我的服务部署到谷歌中。

当我使用poster在本地运行容器时,该服务运行良好,但是,当我在Cloud run向部署的服务发送请求时,我会收到下面的错误。

<title>requests.exceptions.ConnectionError: HTTPConnectionPool(host='<mytableauserver.com>', port=80): Max retries
exceeded with url: /api/2.4/serverInfo (Caused by NewConnectionError('&lt;urllib3.connection.HTTPConnection
object at 0x3ed0efc890d0&gt;: Failed to establish a new connection: [Errno 111] Connection refused')) //
Werkzeug Debugger</title>

app.py:

import os
import logging
from flask import Flask, jsonify, request
import provisioning
# Change the format of messages logged to Stackdriver
logging.basicConfig(format='%(message)s', level=logging.INFO)
app = Flask(__name__)
@app.route('/api/adduser', methods=['POST'])
def add():
return jsonify(provisioning.add(request.json))
@app.route('/api/removeuser', methods=['POST'])
def remove():
return jsonify(provisioning.remove(request.json))
@app.route('/', methods=['GET'])
def hello():
return jsonify({'message' : 'Hello API'}) #Test Endpoint
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=int(os.environ.get('PORT', 80)))

provisioning.py:

import sys
import json
import tableauserverclient as TSC
import re

def sign_in(sitename):
tableau_auth = TSC.PersonalAccessTokenAuth(
token_name='<token_name>', personal_access_token='<token>', site_id=sitename)
server = TSC.Server(
server_address='<http://mytableauserver.com>', use_server_version=True)
#server.add_http_options({'verify': False})
server.auth.sign_in(auth_req=tableau_auth)
return server  
def add(json_request):
site = json_request["sitename"])
session = sign_in(site) # Here is where the process fails
site_role = json_request["rolename"]
user = add_user_to_site(session, json_request, site_role)
add_user_to_group(session, user, json_request)
return json.dumps(json_request)
more code...

Dockerfile:

FROM python:3.8
ADD app.py /
ADD provisioning.py /
RUN pip install tableauserverclient
RUN pip install Flask
CMD [ "python", "./app.py" ]

奇怪的是,我可以在第一次尝试时本地登录服务器(我想(,但当尝试访问云运行时,似乎要尝试多次,直到失败。我在所有容器中使用相同的代码。

基于错误和类似情况:

无法建立新连接:[Erno 111]连接被拒绝'(

您的Python客户端似乎无法将Tableau服务器与Cloud Run连接起来。根据文章为什么我的应用程序日志中出现[Erno 111]连接拒绝错误?:

代理没有运行,或者应用程序的跟踪客户端配置不正确。默认情况下,跟踪程序客户端库在端口8126上提交给localhost。如果这不是您的Agent正在侦听的位置--也许它正在应用程序容器附近的某个Docker容器中侦听--请将跟踪程序客户端指向它正在运行的位置,例如tracer.configure(hostname="172.17.0.1"(。

通过搜索该错误的类似案例,我可以找到该错误的一些解决方案,我建议您查看它。

  • Python客户端无法建立新连接
  • 无法建立新连接:[Erno 111]连接被拒绝#4092
  • 无法建立新连接:[Erno 111]连接被拒绝#484
  • docker-dd代理文档

如果这些信息对您有帮助,请告诉我!

最新更新