Python

web3.py - 等待回調

  • March 21, 2018

我正在嘗試弄清楚如何使用 Web3 過濾器,因為我需要將後端與我的區塊鏈同步。

理想情況下,我希望每次交易發生時觸發一個函式。

根據此處的範例,我讓它工作正常,但這僅適用於互動式外殼。如果在 Python 腳本中執行,它只會同步執行並立即終止。這是程式碼:

import sys

from web3 import Web3, IPCProvider

from web3.utils.filters import TransactionFilter

w3 = Web3(IPCProvider('/x/x/x/ethereum/geth.ipc'))

def new_transaction_callback(transaction_hash):
   sys.stdout.write("New Block: {0}".format(transaction_hash))

new_transaction_filter = w3.eth.filter('pending')
new_transaction_filter.watch(new_transaction_callback)

無限期等待並在事務發生時執行回調的正確方法是什麼?

如果在 Python 腳本中執行,它只會同步執行並立即終止。

在腳本完成後,有多種方法可以讓您的執行時保持活力。幾個選項是:

  • 呼叫你的腳本python -i my_script.py
  • 附加while True: time.sleep(10)到您的腳本,只需Ctrl+C退出
  • 還有很多…

引用自:https://ethereum.stackexchange.com/questions/42758