【问题标题】:fxcmpy connection drops and cant reconnectfxcmpy 连接断开,无法重新连接
【发布时间】:2020-10-22 08:29:14
【问题描述】:

我正在努力使用 fxcmp api (fxcmpy) 保持连接随着时间的推移保持活动状态 一段时间后,连接断开,当代码尝试重新连接时,我收到以下错误消息。

我尝试了几种方法来恢复连接,但似乎没有任何效果

有人知道这是什么问题吗?

|ERROR|2020-10-21 16:05:53,815|Socket returns unknown error.
|ERROR|2020-10-21 16:05:53,815|error in reinitialization

Traceback (most recent call last):
  File "/home/ec2-user/SageMaker/project_forex/disconnect_test.py", line 60, in start_up
    con = setup_con()
  File "/home/ec2-user/SageMaker/project_forex/disconnect_test.py", line 50, in setup_con
    server='real')
  File "/home/ec2-user/anaconda3/envs/forex_cpu/lib/python3.7/site-packages/fxcmpy/fxcmpy.py", line 218, in __init__
    raise ServerError('Can not connect to FXCM Server.')
fxcmpy.fxcmpy.ServerError: Can not connect to FXCM Server.

import time
import pickle
import numpy as np 
import datetime as dt
import pandas as pd
import sys
import fxcmpy

示例代码:

class Data():
    def __init__(self):
        self.time = None
        self.last_data = None
    
    
    def update(self, data, dataframe):
        self.time = pd.to_datetime(int(data['Updated']), unit='ms')
        self.last_data = data['Rates']
        

def run(data, con):

    while con.is_connected():
        try:
            time.sleep(1)

            print(data.time, data.last_data)
        
        except KeyboardInterrupt:
            con.close()
            raise SystemExit

    con.logger.info('lost connection') 
    con.close()
    start_up()

def setup_con():

    con = fxcmpy.fxcmpy(log_file=f"logs/test.log",
                        log_level='debug',
                        access_token='',
                        server='real')

    return con

def start_up():
       
    flag = False

    while not flag:
        try:
            con = setup_con()
            data = Data()
            con.subscribe_market_data('EUR/USD', (data.update,))
            con.logger.info("Setup complete")
            flag = True
            run(data, con)
 
        except Exception:
            print('error in reinitialization')
            con.logger.exception('error in reinitialization')
      

if __name__ == '__main__':
    start_up()

【问题讨论】:

    标签: python api socket.io


    【解决方案1】:

    尝试更改有时连接server='real',有时连接server='real2',并降级版本并强制在requirements.txt 中工作。

    fxcmpy 1.2.6
    python-engineio 3.9.0
    python-socketio 4.4.0
    

    【讨论】:

    • 你能解释清楚吗?我跟不上。我试图通过添加一些格式来澄清,但我不确定这是否足够。未来的读者可能需要进一步明确。
    猜你喜欢
    • 2021-04-12
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 2019-02-22
    • 1970-01-01
    相关资源
    最近更新 更多