【问题标题】:Python function skipped during execution执行期间跳过 Python 函数
【发布时间】:2021-03-12 03:48:03
【问题描述】:

我正在尝试创建一个简单的脚本来在 Binance 交易所买卖指定的加密货币。下面是创建买卖订单的买卖函数的 sn-p。

from binance.client import Client 

'api_key' = 'xxxxxxxxxxxx' 
'secret' = 'xxxxxxxxxxxx'  

client = Client(api_key, api_secret)  
def create_buy():     
    try:         
        buy_order = client.order_limit_buy(symbol='ETHUSDT', quantity=1, price='1500')         
        print(str(buy_order ))         
        create_sell()     
    except Exception as e:
        print(e)
        pass
def create_sell():     
    try:         
        sleep(1)         
        sell_order= client.order_limit_sell(symbol='ETHUSDT', quantity=1, price='2000')
        print(str(sell_order))  
        exit()   
    except Exception as e:         
        print(e.message)         
        pass 

if __name__ == '__main__':    
    create_buy() 

大多数情况下,它从头到尾运行并没有问题返回BoughtSold,然后退出程序。 但是,有时它会跳过create_sell()。我知道这一点,因为我总是得到create_buy() 的回报,但随后程序立即退出而不调用create_sell()。我认为这可能是由于交易所和我之间的延迟问题,但我无法捕捉到这一点吗?

如果我将create_sell() 放在 try 块之外或放在 main 块中以便读取,会有什么不同吗?

【问题讨论】:

    标签: python function skip cryptocurrency


    【解决方案1】:

    我假设您是从代码中的其他位置调用 create_buy(),因为它在大多数情况下都按预期工作,我认为有两种情况可能会失败。

    1. 在 create_buy() 中,client.order_limit_buy 可能会引发异常。您需要将其打印到您的日志文件或其他地方进行检查。 此外,如果您确定,即使在异常情况下也应该调用 create_sell(),编写一个 finally 块并将对 create_sell() 的调用移动到 finally 块中
    2. 另一种可能性是在 create_sell() 中调用 client.order_limit_sell 可能会引发异常,请检查一下。

    【讨论】:

    • 1.如果 client.order_limit_buy 要抛出异常,它将被捕获在 except 块中,我已经使用它进行了多次调试。但是,我将实现 finally 并查看它是否进行了任何更改。奇怪的是,当我调试程序时,它在 create_buy() 之后退出而没有抛出任何异常,这让我想知道程序会到达 finally 块吗? 2.如果抛出异常,应该已经被except块捕获了,对吧?我将在 create_sell() 的开头添加一些打印语句,以查看程序是否实际调用它。
    • 据我了解,finally block 总是被调用。尝试在异常块中打印所有可能的值,如符号等,以查看 mg=ight 何时抛出异常。顺便说一句,您确定“client.order_limit_buy”是否是同步函数并且仅在事务完成时才返回?如果是异步的,在交易完成之前返回,sell 可能会抛出异常。
    • client.order_limit_buy 是我理解的同步函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    相关资源
    最近更新 更多