【发布时间】:2021-09-18 14:11:33
【问题描述】:
我正在做一个简单的请求,它使用来自多边形扫描的随机散列从区块链返回确认号。
我遇到的问题是 while 循环,它不断循环使用相同的确认号码,而不是更新区块链上表示的真实号码。
例如,当哈希确认为 100 时,它将继续打印 100,而区块链确认在 polyscan 上上升。
我希望 ctc 变量在 while 循环中更新为真正的确认。
from web3 import Web3
web3 = Web3(Web3.HTTPProvider(<APIKEY>))
check_txn_confirmations = web3.eth.blockNumber - web3.eth.getTransaction('0x7a0b596a664e5b56091b775d294d374364db00cab531b8dc18c70932896ccf44ec').blockNumber
ctc = check_txn_confirmations
while ctc < 260:
print("confirmations are:", ctc)
time.sleep(10)
print("waiting 10seconds..")
else:
print("confirmations are larger")
【问题讨论】:
-
在 While 循环中发送 API 请求是一个非常糟糕的主意,我建议更改程序的结构。
-
谢谢。您能否建议一种方法,我可以在程序中多次 ping 并考虑相同的目标?
-
为什么不能在while循环中移动调用?没有其他方法可以做到这一点,除非你想写一个基于回调的应用程序,或者一个多线程/异步应用程序。
-
我无法将调用移动到循环中,因为输出是 while 条件的一部分。除非我错过了什么?
-
如果您在循环内更改“ctc”的值,新值将在下次评估
while时使用。事实上,总是需要在循环内部更改条件,否则不会退出任何 while 循环。