[打脸]王八壳子还是回家做你们的数据库去吧
别搁这做云了,portal 体验差的一塌糊涂不说。
走API 开机器估计全是 async RPC,吃了 vCore和 RAM 开不出 boot volume 我人都直接懵圈儿了。
关键是这玩意占用了 quota 还没法儿查,tenancy explorer 白花花的啥都没有,搁这想让我升级账号也得做个能用的 console 吧哥
别搁这做云了,portal 体验差的一塌糊涂不说。
走API 开机器估计全是 async RPC,吃了 vCore和 RAM 开不出 boot volume 我人都直接懵圈儿了。
关键是这玩意占用了 quota 还没法儿查,tenancy explorer 白花花的啥都没有,搁这想让我升级账号也得做个能用的 console 吧哥
把Web3.provider变成Async以后https://t.cn/A6XkaFKg,如何异步获取链上信息?
Web3对象的大部分RPC交互功能,都放在了Web3.eth里面,而Web3.eth对象默认情况下属于Eth类。Eth对象包含了许多查询区块链信息的方法,如get_balance(以太余额)、get_block(区块信息)、get_transaction(交易信息)、call(读取合约)等。而所有的查询方法,其实都直接或间接地指向一种Eth类下面的类属性,Method对象。
Method就是Web3.py用来包装RPC(Remote Procedure Call)的对象,其定义了__get__方法,因此属于Python里的描述器。在Eth类被Python解析器定义的时候,get_code这些类属性会被指向对应的Method描述器,当调用时以__get__方法赋值,通过调用Web3.eth.retrieve_caller_fn(Method(……)),最终指向一个包含输入参数格式化、发送网络请求、返回结果格式化的函数。
至于该RPC请求函数是同步还是异步,视乎在Web3.eth对象这个Module的子类初始化时,retrieve_caller_fn属性指向retrieve_blocking_method_call_fn还是retrieve_async_method_call_fn。如果是前者,读取合约用的就是Web3.eth.call(……);反之则在前面加上await,使之变为异步。
未完待续。
Web3对象的大部分RPC交互功能,都放在了Web3.eth里面,而Web3.eth对象默认情况下属于Eth类。Eth对象包含了许多查询区块链信息的方法,如get_balance(以太余额)、get_block(区块信息)、get_transaction(交易信息)、call(读取合约)等。而所有的查询方法,其实都直接或间接地指向一种Eth类下面的类属性,Method对象。
Method就是Web3.py用来包装RPC(Remote Procedure Call)的对象,其定义了__get__方法,因此属于Python里的描述器。在Eth类被Python解析器定义的时候,get_code这些类属性会被指向对应的Method描述器,当调用时以__get__方法赋值,通过调用Web3.eth.retrieve_caller_fn(Method(……)),最终指向一个包含输入参数格式化、发送网络请求、返回结果格式化的函数。
至于该RPC请求函数是同步还是异步,视乎在Web3.eth对象这个Module的子类初始化时,retrieve_caller_fn属性指向retrieve_blocking_method_call_fn还是retrieve_async_method_call_fn。如果是前者,读取合约用的就是Web3.eth.call(……);反之则在前面加上await,使之变为异步。
未完待续。
内嵌提示与进度
P1: inlay hints
又名: 瞟一眼就知道啥是啥不用看悬浮提示也不用转到声明&定义。第一次见到这玩意儿是在idea里面,不过前段时间M$也给自家更新了类似的东西
弄的时候稍微有点波折,一开始怎么都没法命中断点,翻了翻设置,才发现是因为VSCode修改了这一项的值类型,原来的true/false自然就没效果了,然而它还在忠实的为我同步旧版本……
嗯,又要打表了……
P2: 进度
后台显示异步操作的进度
花了点功夫才弄明白async/await的机制,并保证它是顺序执行的,即使循环里使用了它(因为诊断里检测文件是否合法是依赖于前一步扫描文件生成的补全列表的,所以必须要求执行顺序,比如用Promise.all)
P1: inlay hints
又名: 瞟一眼就知道啥是啥不用看悬浮提示也不用转到声明&定义。第一次见到这玩意儿是在idea里面,不过前段时间M$也给自家更新了类似的东西
弄的时候稍微有点波折,一开始怎么都没法命中断点,翻了翻设置,才发现是因为VSCode修改了这一项的值类型,原来的true/false自然就没效果了,然而它还在忠实的为我同步旧版本……
嗯,又要打表了……
P2: 进度
后台显示异步操作的进度
花了点功夫才弄明白async/await的机制,并保证它是顺序执行的,即使循环里使用了它(因为诊断里检测文件是否合法是依赖于前一步扫描文件生成的补全列表的,所以必须要求执行顺序,比如用Promise.all)
✋热门推荐