es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Intenta conectarse a un contenedor de Docker desde un script de Python (Interactive Brokers)

En mi Synology tengo este contenedor Docker en ejecución: https://registry.hub.docker.com/r/mgvazquez/ibgateway/

En el “manual” dice: “En este ejemplo, lanzarás el Interactive Brokers Gateway en modo de papel escuchando en el puerto 4001, y el VNC Server escuchando en el puerto 5900”

Así que en el contenedor Docker hice la siguiente asignación de puertos:

Puerto local 32778 al contenedor 5900 y puerto local 32776 al contenedor 4001. Mi Nas Synology es 192.168.2.6.

Cuando me conecto desde mi PC local usando VNC a 192.168.2.6:32778 funciona perfectamente.

Ahora, en mi script de Python hago lo siguiente:

from ib_insync import *
ib = IB()

# usa esto en su lugar para IB Gateway
ib.connect('192.168.2.6:32776', 4002, clientId=1)

El 4002 es una configuración del puerto de socket dentro del gateway.

Cuando ejecuto el script, obtengo “Getaddrinfo failed”. No tiene sentido para mí.

¿Cuál puede ser el problema aquí?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema puede ser que los números de puerto en el script de Python no coincidan con los números de puerto que se asignaron en el contenedor Docker. En el script, se utiliza el puerto 32776 para el IB Gateway, pero en el mapeo de puertos, se asigna el puerto 32776 al puerto 4001 en el contenedor. Además, el mensaje de error “Getaddrinfo failed” puede indicar que hay un problema con el nombre de host o la dirección IP proporcionada en la función connect(). Verifique que la dirección IP y los números de puerto sean correctos y coincidan con el mapeo de puertos en el contenedor Docker.

Comments are closed.