Forex-python“货币汇率源未准备好”

问题描述 投票:0回答:3

我想使用 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 中有很多行......

python pandas currency
3个回答
1
投票

我在convert.py(forex-python的一部分)中插入了一个小打印语句来调试它。

print(response.status_code)

目前我收到:

502

阅读这些有关 HTTP 502 错误的线程:

在 HTTP 502 中,无效响应是什么意思?

https://www.lifewire.com/502-bad-gateway-error-explained-2622939

这些错误完全独立于您的特定设置, 这意味着您可以在任何浏览器、任何操作系统上看到它 系统以及任何设备上。

502 表示当前该 API 用于向我们提供所需数据的基础设施存在问题。由于我自己也需要数据,我将继续监控此问题并更新我在该网站上的帖子。

Github 上已经有一个关于此问题的问题:

https://github.com/MicroPyramid/forex-python/issues/100


0
投票

来源:https://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

或者更好的是,使用像退避这样的库,为您重试:

https://pypi.python.org/pypi/backoff/1.3.1


0
投票

我制作了一个用于汇率的 API(时不时地更改软件包有点沮丧,因为它们停止工作并依赖于其他人):

https://exchange.nanoapi.dev

您不需要安装任何第三方依赖项,我在上面的链接中提供了如何使用它的示例。

© www.soinside.com 2019 - 2024. All rights reserved.