解决了自动收取收益脚本(Auto Claim Rewards)的问题

in #cn6 years ago

我的朋友今天问我,为什么他的奖励好久没有自动回收(Auto Claim)了。额,他把posting key放在我这里,让我自动帮他收取收益,但是据我所知,这个收取收益的脚本已经不工作好久啦。


(图源 :pixabay)

我和他说:“你收或者收,奖励都在那里,不离不弃!”,他回我:“少跟我扯犊子,快点解决问题!”哎,这人咋这么粗鲁呢。不过也是如果自动(及时)收取收益,那么赚取的SP部分直接就会起作用,点赞威力会增加,还是很有用滴。

问题查找

于是就去看看吧,虽然懒惰,但是有些问题总是要面对的。我首先怀疑脚本使用的节点有问题,那就换个节点好喽。然而我换了N个节点,执行脚本都是显示链接错误,这就诡异了,我瞪大眼珠一个一个字符核对,我设置节点的命令应该没有任何毛病呀。

既然不是我设置的节点的问题,那么肯定是有啥其它问题作祟,那么再瞪大眼珠看看出错信息都提示啥了吧,于是我尝试从满屏的报错信息中找到有用的内容,等等,为啥报的是连接XXX节点错误?我脚本中明明设置的是AAA节点?

于是我去看steem-python代码,总算找到了端倪,原来claim_reward_balance这个功能用到了Account类来获取用户待收取收益,然后生成ClaimRewardBalance来完成收益的收取。

但是Account类使用了shared_steemd_instance()来访问区块链,shared_steemd_instance()使用steem-python配置的默认节点,而我配置的默认节点是XXX。至此问题就清楚了,原来是XXX节点DOWN掉,而不是AAA节点的问题。

问题解决

那么这个问题如何解决呢?一种方法是改steem-python的代码,claim_reward_balance中给Account类实例传入当前steemd instance,避免使用shared_steemd_instance()

另外一种方法就更简单了,更新一下steem-python的默认节点就可以啦。

steempy set nodes https://api.steemit.com

总结

steem-python代码里shared_steemd_instance()的存在,让代码行为有时候会很诡异。简单来讲就是我们虽然在脚本中指定了节点,但是steem-python部分功能会使用默认节点,这样如果默认节点出错,就会让程序和我们的期望大相径庭。

遇到类似问题,要么去改steem-python代码,避免使用共享steemd实例,要么记得更新默认节点。

不过对我而言,能让我那个粗鲁的朋友闭嘴,就行啦。😰

Sort:  

O哥你还缺朋友吗。。。

嗷嗷缺啊,要不你也把posting key给我?😄

O哥人也太好了,對粗魯的朋友也這麼好

Congratulations @oflyhigh! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of comments received

Click on any badge to view your own Board of Honor on SteemitBoard.

To support your work, I also upvoted your post!
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

Do not miss the last announcement from @steemitboard!

O哥学习的榜样

Coin Marketplace

STEEM 0.27
TRX 0.11
JST 0.030
BTC 71342.73
ETH 3809.46
USDT 1.00
SBD 3.49