WSAECONNREFLESS:通过PyRFC建立连接时拒绝连接

2024-05-15 13:07:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我选择PyRFC库来完成从Python连接到SAP的任务。除了连接,一切正常。代码在连接到SAP时停止并显示错误消息

import pyrfc
def get_connection(connmeta):
print('Connecting ...', connmeta['ashost'])
return Connection(**connmeta)

TEST = { 'user' : 'XX',
'passwd' : 'XX',
'ashost' : 'XXX.XXX.XXX.XXX',
'sysnr' : '00',
'client' : '400',
'lang' : 'EN' }

conn = get_connection(TEST)

它抛出:

ERROR Message

pyrfc._exception.CommunicationError: RFC_COMMUNICATION_FAILURE (rc=1): key=RFC_COMMUNICATION_FAILURE, message=

LOCATION CPIC (TCP/IP) on local host XXX-XXXXXXX with Unicode

ERROR partner 'XXX.XXX.XXX.XXX:3300' not reached

TIME Tue Nov 13 16:33:59 2018

RELEASE 721

COMPONENT NI (network interface)

VERSION 40

RC -10

MODULE nixxi.cpp

LINE 3283

DETAIL NiPConnect2: XXX.XXX.XXX.XXX:3300

SYSTEM CALL connect

ERRNO 10061

ERRNO TEXT WSAECONNREFUSED: Connection refused

COUNTER 2

[MSG: class=, type=, number=, v1-4:=;;;]

问题似乎在于服务器的防火墙。我在互联网上搜索了大多数类似的答案,包括SAP的社区

然后,我远程登录SAP的IP端口并获得超时。端口关闭似乎会导致连接失败

但在使用Python之前,我使用VBA从SAP获取数据。VBA中的配置与Python中的配置几乎相同

Set R3 = CreateObject("SAP.Functions")  
    R3.Connection.System = "PRT"  
    R3.Connection.ApplicationServer = "XXX.XX.XX.XX" 
    R3.Connection.Client = "400" 
    R3.Connection.SystemNumber = "00" 
    R3.Connection.User = "XX"
    R3.Connection.Password = "XX" 
    R3.Connection.Language = "EN" 
    R3.Connection.Codepage = "1100"

retcd = R3.Connection.Logon(1, True) 
If retcd <> True Then  
   MsgBox "Logon failure" 
Else 
   MsgBox "Logon success" 
End If

它工作得很好,但效率很低,这就是为什么我选择Python作为解决方案。有人知道为什么VBA成功了,但Python失败了吗


Tags: testgeterrorconnectionvbaxxxensap
2条回答

此消息似乎是网络问题:

Connection refused

“连接被拒绝”是一条标准TCP/IP错误消息,表示端口号不正确。仔细检查,后端系统的SystemNumber是否真的为“00”

相关问题 更多 >