首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Forex-python“货币汇率来源未就绪”

Forex-python“货币汇率来源未就绪”
EN

Stack Overflow用户
提问于 2017-08-22 19:18:56
回答 1查看 3.4K关注 0票数 1

我想使用Forex-python模块根据特定日期(根据dataframe中的日期,上个月的最后一天)将各种货币的金额转换为特定货币("DKK")。

这是我的代码的结构:

代码语言:javascript
复制
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

并使用换算后的金额显示新列:

代码语言:javascript
复制
df['Amount, DKK'] = np.vectorize(convert_rates)(
    amount=df['Amount'],
    currency=df['Currency'],
    PstngDate=df['Date']
)

我得到了RatesNotAvailableError“货币汇率来源没有准备好”,你知道什么会导致这种情况吗?它以前处理过少量数据,但我在实际的df中有很多行……

EN

回答 1

Stack Overflow用户

发布于 2017-08-22 19:31:14

来源:https://github.com/MicroPyramid/forex-python/blob/80290a2b9150515e15139e1a069f74d220c6b67e/forex_python/converter.py#L73

您的错误意味着库收到了对您的请求的非200响应码。这可能意味着网站关闭了,或者它暂时阻止了你,因为你正在向它发送大量的请求。

尝试将对c.convert的调用替换为以下内容:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45816190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档