pandas Forex-python“货币汇率来源未准备就绪”

6bc51xsx  于 2023-02-14  发布在  Python
关注(0)|答案(2)|浏览(105)

我想使用Forex-python模块根据特定日期(根据数据框中的日期为上个月的最后一天)将各种货币的金额转换为特定货币(“DKK”)
这是我的代码的结构:

pd.DataFrame(data={'Date':['2017-4-15','2017-6-12','2017-2-25'],'Amount':[5,10,15],'Currency':['USD','SEK','EUR']})

def convert_rates(amount,currency,PstngDate):
    PstngDate = datetime.strptime(PstngDate, '%Y-%m-%d')
    if currency != 'DKK':
        return c.convert(base_cur=currency,dest_cur='DKK',amount=amount \
                     ,date_obj=PstngDate - timedelta(PstngDate.day))
    else:
        return amount

并显示包含转换后金额的新列:

df['Amount, DKK'] = np.vectorize(convert_rates)(
    amount=df['Amount'],
    currency=df['Currency'],
    PstngDate=df['Date']
)

我得到RatesNotAvailableError“货币汇率源未就绪”任何想法是什么可能导致这一点?它以前曾与少量的数据,但我有许多行在我真实的df...

cuxqih21

cuxqih211#

我在convert.py(forex-python的一部分)中插入了一个小字语句来调试这个问题。

print(response.status_code)

目前我收到:

502

请阅读以下有关HTTP 502错误的主题:
In HTTP 502, what is meant by an invalid response?
https://www.lifewire.com/502-bad-gateway-error-explained-2622939
这些错误与您的特定设置完全无关,这意味着您可以在任何浏览器、任何操作系统和任何设备上看到这些错误。
502表示此API用于向我们提供所需数据的基础架构目前存在问题。由于我自己也需要这些数据,我将继续关注此问题,并不断更新我在此网站上的帖子。
Github上已经有一个关于这个问题的问题:
https://github.com/MicroPyramid/forex-python/issues/100

hiz5n14c

hiz5n14c2#

来源:www.example.comhttps://github.com/MicroPyramid/forex-python/blob/80290a2b9150515e15139e1a069f74d220c6b67e/forex_python/converter.py#L73
您的错误意味着图书馆收到了对您请求的非200响应代码。这可能意味着站点已关闭,或者由于您不断向其发送请求而暂时阻止了您。
尝试将对c.convert的调用替换为如下内容:

from time import sleep
def try_convert(amount, currency, PstngDate):
    success = False
    while success == False:
        try:
            res = c.convert(base_cur=currency,dest_cur='DKK',amount=amount \
                     ,date_obj=PstngDate - timedelta(PstngDate.day))
        except:
            #wait a while
            sleep(10)
    return res

或者更好的是,使用像backoff这样的库来为您执行重试:
https://pypi.python.org/pypi/backoff/1.3.1

相关问题