0%

eth | subscribe

首先 web3.py 目前没有 web3.jssubscribe 的方式。

根据

至今 web3.py 没有提供 subsctibe 的方式,目前只能依靠过滤器。

请参考

但是网上提供了一种新的解决思路,但是我并没有试过,在这里放一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import asyncio
import json
import requests
from websockets import connect

async def get_event():
async with connect("ws://localhost:8545") as ws:
await ws.send({"id": 1, "method": "eth_subscribe", "params": ["newHeads"]})
subscription_response = await ws.recv()
print(subscription_response)
# you are now subscribed to the event
# you keep trying to listen to new events (similar idea to longPolling)
while True:
try:
message = await asyncio.wait_for(ws.recv(), timeout=60)
print(json.loads(message))
pass
except:
pass
if __name__ == "__main__":
loop = asyncio.get_event_loop()
while True:
loop.run_until_complete(get_event())

github 上提供了一个开源的 subscribe 的项目。

请我喝杯咖啡吧~