___|  _ \   |  |    |   |_ _|\ \     / ____|
 |     |   |  |  |    |   |  |  \ \   /  __|
 |   | |   | ___ __|  ___ |  |   \ \ /   |
\____|\___/     _|   _|  _|___|   \_/   _____| 

 --- A GOPHER-LIKE INTERFACE FOR HIVE BLOCKCHAIN ---

两行代码将老版本steem-python 程序迁移到AppBase

BY: @oflyhigh | CREATED: May 28, 2018, 2:32 p.m. | VOTES: 142 | PAYOUT: $79.79 | [ VOTE ]

三个多月以前我发帖说AppBase相关的内容:《体验一下 Steem 0.19.4 & condenser_api》,3天以前又发帖说了JUSSI《JUSSI: 想说爱你并不是很容易的事》

[IMAGE: https://cdn.steemitimages.com/DQmYLCYG1EpexUW76azTWcdLHAWr81JHTiLYXH9YQqwfoZx/image.png]

变化

之所以时隔三个月又老话重提,实在是最近steem节点变化比较大,导致我的一些代码出了很多意想不到的BUG。

举例来讲,三个月之前steemd的代码里还看不到任何condenser_api相关的字样,大部分api还是在database_api中,如果我们调用了condenser_api实则是通过jussi重写规则生成的database_api调用。

而现今,steemd代码中已经有独立的condenser_apidatabase_api以及其它一些传统的api中大部分功能都放到了condenser_api中。老式的对database_api 的调用是通过jussi重写规则生成的condenser_api调用。

是不是有点晕?我也晕了😵

节点

因为上述变化以及JUSSI的存在,现在各个节点的状况比较混乱,主要有以下几个方面:

因为上述原因,不同节点行为会有很大的差异,简单来讲,你的程序使用A节点可以工作,到B节点可能就会出现异常。即便使用A节点可以工作,还要防备哪天节点A升级到新版本。

steem-python

尽管不同版本的节点以及节点是否集成了JUSSI、集成了哪个版本,可能会导致程序行为不一致,但是往新版本新规则上靠拢总是没有大错的,尽管紧跟官方的步伐可能有点累。

这两天我的两个程序出现了一些异常,我调试发现,是因为我安装的老版本steem-python中大量功能还是使用database_api 进行的调用。对于集成JUSSI的节点,需要JUSSI对调用进行重写转发,而对于未集成JUSSI的节点,则会类似Could not find method xxx的错误。

升级steem-python或许是一种方法,但是我安装的版本自己改动的较多,并且代码都很熟悉了,新版本的steem-python改动较大,需要去测试后才能应用于生产环境。

另外一种做法是对steem-python中的每个方法进行修改,显式地指定api,比如说condenser_api,但是涉及修改的地方太多了,无力去逐一修改。所以想了个取巧的方法。

http_client.py中对应处加入如下代码:
[IMAGE: https://cdn.steemitimages.com/DQmckrqN6K53GxzJKuDz4kVj7Fri35RV99LFUBJ43gFRhZD/image.png]

当然了,以上修改只不过是应急之选,升级steem-python版本或许才是正确方案。不过上述方案无疑是最适合我的,不然谁知道过几天又要改什么,先这么用着吧,好用就好。

权且记录下来备忘,有相同问题的朋友也可以拿去参考。先声明,程序改坏了,我不负责哦😀

TAGS: [ #cn ] [ #steem-python ] [ #appbase ] [ #cn-programming ]

Replies

@cn-naughty.boy | May 28, 2018, 2:33 p.m. | Votes: 2 | [ VOTE ]

@oflyhigh, 代码/编程/IT搞得很溜啊,陶醉本尊了,快扶我一下...

[ BACK TO TRENDING ] [ BACK TO MENU ]
CMD>