Using Web3.py I understand that I can create a new smart contract event filter with:

Contract.events.your_event_name.createFilter(fromBlock=block, toBlock=block, argument_filters={'arg1': 'value'}, topics=[])

I want to listen for multiple smart contract events. My proposed solution is to use threads.

client = Web3Client(nodeUri=nodeUri)
event1 = client.contract.events.your_event_name()
block_filter1 = event.createFilter(fromBlock="latest")
worker1 = Thread(target=log_loop, args=(block_filter1, 5), daemon=True)
event2 = client.contract.events.another_event_name()
block_filter2 = event.createFilter(fromBlock="latest")
worker2 = Thread(target=log_loop, args=(block_filter2, 5), daemon=True)

Is it possible to filter for multiple your_event_name(s) in one filter? Or is the best practice to use threads?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.