Все, что находится после строки return
в функции, не будет запущено, что означает, что ваше соединение API не закрывается.
Поведение в этом случае будет зависеть от того, как разработан API, но большинство скорее всего второе соединение просто не открывается, а первое сохраняется. Вот почему вы дважды получаете баланс из первой функции.
Попробуйте сделать это вместо:
acc.connect()
balance = acc.get_balance()
acc.api.close()
return balance