He desarrollado un servicio personalizado para el aprovisionamiento de Tableau Server a través de un servicio en la nube de Google Frasco Ejecutar. Yo uso un recipiente ventana acoplable para desplegar mi servicio en Google.
El servicio funciona bien cuando corro el contenedor a nivel local con el cartero, sin embargo, me sale el siguiente error al enviar la solicitud al servicio desplegado en la nube en Ejecutar.
<title>requests.exceptions.ConnectionError: HTTPConnectionPool(host='<mytableauserver.com>', port=80): Max retries
exceeded with url: /api/2.4/serverInfo (Caused by NewConnectionError('<urllib3.connection.HTTPConnection
object at 0x3ed0efc890d0>: 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" ]
Lo que parece extraño es el hecho de que pueda iniciar sesión en el servidor de destino, en el primer intento (supongo), pero cuando trate de llegar a la nube de ejecución, que parece ser probar varias veces hasta que falla. Utilizo mismo código en todos los contenedores.
Con base en los casos de error y similares:
No se pudo establecer una nueva conexión: [Errno 111] Conexión rechazada '))
Parece que su cliente Python no es ser capaz de conectar su Tableau Server con su nube de ejecución. Según el artículo ¿Por qué recibo [ErrNo 111] errores de conexión negado en mis registros de la aplicación? :
O bien el agente no se está ejecutando, o cliente trazador de su aplicación no está configurada correctamente. Por defecto, las bibliotecas de cliente trazador se someten a localhost en el puerto 8126. Si esto no es donde el agente está escuchando, tal vez se escucha en alguna de envase acoplable al lado de su aplicación contenedora de punto trazador su cliente a donde se está ejecutando, por ejemplo tracer.configure (hostname = "172.17.0.1").
Búsqueda por casos similares de este error, no pude encontrar algunas soluciones para este error, que yo le recomendaría a echar un vistazo a él.
- Python cliente No se ha podido establecer una conexión nueva
- No se pudo establecer una nueva conexión: [Errno 111] Conexión rechazada # 4092
- No se pudo establecer una nueva conexión: [Errno 111] Conexión rechazada # 484
- documentación ventana acoplable-dd-agente
Déjame saber si la información que ayudó!