FIX sessionNotFound 在启动时

FIX sessionNotFound at initiation

我正在尝试使用 quickfix 构建我的修复应用程序,但是在启动它时,它首先在登录之前发送注销消息,并引发未找到会话。

class Application(quickfix.Application):

def __init__(self, session, logger):        
    super(Application, self).__init__()
    self.session = session
    self.logger = logger

def onCreate(self, sessionID):
    self.logger.info("Created session {}.".format(sessionID))
    return
    
def onLogon(self, sessionID):
    self.logger.info("Logon session {}.".format(sessionID))      
    return 

def onLogout(self, sessionID):
    self.logger.info("Logout session {}.".format(sessionID))
    return

def toAdmin(self, message, sessionID):
    msgType = quickfix.MsgType()
    message.getHeader().getField(msgType)
    
    if msgType.getValue() == quickfix.MsgType_Logon:
        self.logger.info('LOGON SessionID {}'.format(sessionID))
    elif msgType.getValue() == quickfix.MsgType_Logout:
        self.logger.info('LOGOUT SessionID {}'.format(sessionID))
    
    self.logger.info('to Admin session {} send {}'.format(sessionID, self.messageToString(message)))
    self.session.sendToTarget(message)
    return

def toApp(self, message, sessionID):
    self.logger.info('to App: {}'.format(message))
    self.session.sendToTarget(message)
    return

def fromApp(self, message, sessionID):
    self.logger.info('from App: {}'.format(message))
    return

logger = create_logger(config)
settings = quickfix.SessionSettings(client_config)
application = Application(quickfix.Session, logger)
storeFactory = quickfix.FileStoreFactory(settings)
logFactory = quickfix.ScreenLogFactory(settings)
initiator = quickfix.SocketInitiator(application, storeFactory, settings, logFactory)
initiator.start()

我得到以下信息:

LOGOUT SessionID FIX44:Client->Server to Admin session FIX44:Client->Server send 8=FIX.4.4|9=62|35=5|34=26|49=Client|52=20200608-12:26:03|56=Server|10=168

File "FIx.py", line 42, in toAdmin self.session.sendToTarget(message) SessionNotFound: Session Not Found

知道为什么它会引发消息吗?

谢谢大家!

from/toAppfrom/toAdmin 方法是回调,您应该 自己通过 Session.sendToTarget.[=13 发送传递的消息=]

相反,消息将在回调 returns 时由 quickfix 发送。