2017-06-09 21 views
1

我有一小塊代碼,我建立FIX連接並能夠成功連接。使用Python的quickfix包,我該如何強制註銷FIX連接?

file   = sys.argv[1] 
settings  = fix.SessionSettings(file) 
application = FIX_IO(1) 
storeFactory = fix.FileStoreFactory(settings) 
initiator = fix.SocketInitiator(application, storeFactory, settings) 

initiator.start() 
application.run() 
# initiator.stop() 

我想在每次關閉程序時註銷FIX會話。我也在這裏定義的quickfix類功能

import quickfix as fix 

class FIX_IO(fix.Application): 
    def onCreate(self, sessionID): 
     self.sessionID = sessionID 
     print("FIX Thread started now > \n") 

    def onLogon(self, sessionID): 
     print("We are live now > \n") 

    def onLogout(self, sessionID): 
     print("Disconnected..") 

    def toAdmin(self, message, sessionID): 
     msgType = fix.MsgType() 
     message.getHeader().getField(msgType) 
     msgType = msgType.getValue() 

    def toApp(self, message, sessionID): 
     self.handle_incoming_message(message) 

    def fromApp(self, message, sessionID): 
     self.handle_incoming_message(message) 

    def send_message(self, message): 
     fix.Session.sendToTarget(message, self.sessionID) 

    def handle_income_message(self, msg): 
     pass 

我打過電話線initiator.stop(),但我的功能FIX_IO.onLogout不叫。有沒有辦法在我的程序中的任何地方調用FIX會話的註銷,只需訪問我用來連接的quickfix.application對象?

回答

1

在QuickFixJ您Initiator i您可以使用類似

SessionID id = i.getSessions().get(0); 
Session.lookupSession(id).logout();