Die Ereignis-Listener-Funktion von Web3.py registriert keine Änderungen

Ich verwende die Python-Implementierung der web3-Bibliothek. ( https://github.com/pipermerriam/web3.py ) Das Aufrufen und Interagieren mit Verträgen funktioniert einwandfrei, aber wenn es um die Event-Listener-Funktionalität geht, ist keines der ausgelösten Ereignisse vom Programm registriert.

def transfer_callback(log_entry): print "Event fired"

filter = contract.on("DisplayChange", {})

filter.watch(transfer_callback)

Das Beobachten des Vertragsereignisses im Ethereum Wallet funktioniert ebenfalls ohne Probleme, das Problem hängt also definitiv mit Python zusammen. Vielen Dank im Voraus für jede Antwort.

Antworten (2)

Vielleicht möchten Sie sich die Dokumente hier ansehen , das Beispiel ist ziemlich klar:

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

new_transaction_filter = web3.eth.filter('pending')
new_transaction_filter.watch(new_transaction_filter)
# each time the client receieves a unmined transaction the
# `new_transaction_filter` function will be called with the transaction
# hash.

Ein weiterer guter Ort, um sich Beispiele anzusehen, wie es implementiert werden sollte, ist der Testordner, speziell hier

Die Watch-Methode ist nicht mehr vorhanden, ich denke, 'LogFilter' object has no attribute 'watch'web3.py 5.19

Wenn Sie Vertragsereignisprotokolle erhalten möchten

def transfer_callback(log_entry): 
    print "Event fired"

contract = web3.eth.contract(abi, address)
contract.on("DisplayChange", {}, transfer_callback)