Python多服务器TCP Socket连接出现Connection Refused问题求助
多服务器TCP Socket连接拒绝问题
我有3台服务器需要互联通信,目标是运行分布式MapReduce。用Python的TCP Socket实现多服务器连接时遇到问题,我简化了代码来定位这个特定问题。重要信息:这段代码通过文末的bash脚本分发并在computers列表中的每台服务器上运行。
简化后的Python代码
from _thread import * import socket from time import sleep computers = ["137.194.142.130", "137.194.142.131", "137.194.142.133"] list_PORT = [3652,4457, 6735, 9725] idt = socket.gethostbyname(socket.gethostname()) SIZE = 1024 FORMAT = "utf-8" server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind((idt, list_PORT[computers.index(idt)+1])) server.listen() sleep(4) # 让所有服务器有时间启动监听,再执行后续连接逻辑 list_socket_rec = [] if computers.index(idt) != 0: for server in computers[:computers.index(idt)]: socket_nb = 0 skt = socket.socket(socket.AF_INET, socket.SOCK_STREAM) list_socket_rec.append(skt) list_socket_rec[socket_nb].connect((server, list_PORT[computers.index(idt)])) # 报错:连接被拒绝 socket_nb += 1 # 这个循环尝试连接列表中索引比当前服务器小的所有节点,避免重复连接
报错信息
代码末尾的connect()函数触发如下错误:
Traceback (most recent call last): File "file", line 24, in <module> list_socket_rec[socket_nb].connect((server, list_PORT[computers.index(idt)])) # fonctionne pas ==> connection refused ConnectionRefusedError: [Errno 111] Connection refused
启动服务器的Shell脚本
#!/bin/bash # A simple variable example login="login" remoteFolder="/tmp/$login/" fileName="server" fileExtension=".py" computers=("137.194.142.130", "137.194.142.131", "137.194.142.133") for c in ${computers[@]}; do command0=("ssh" "$login@$c" "lsof -ti | xargs kill -9") command1=("ssh" "$login@$c" "rm -rf $remoteFolder;mkdir $remoteFolder") command2=("scp" "$fileName$fileExtension" "$login@$c:$remoteFolder$fileName$fileExtension") command3=("ssh" "$login@$c" "cd $remoteFolder; python3 $fileName$fileExtension") echo ${command0[*]} "${command0[@]}" echo ${command1[*]} "${command1[@]}" echo ${command2[*]} "${command2[@]}" echo ${command3[*]} "${command3[@]}" & done
补充尝试
我曾以为问题是同一端口多连接导致的,尝试为每个连接绑定/使用不同端口,但错误依然存在。手动测试两台服务器:先运行列表第一台的代码,再运行第二台,连接成功。
内容的提问来源于stack exchange,提问作者Dorian Fitton-Keller
相关产品推荐
相关产品推荐

