bitcoinrpc调用什么都不返回

时间:2016-07-28 17:27:13

标签: python django json-rpc bitcoind

我在我的项目中使用bitcoind,当我在服务器上部署bitcoind时,工作很奇怪。我使用这个lib来使用rpc https://github.com/jgarzik/python-bitcoinrpc。在本地开发服务器上一切都很好但是当我将它部署到vps时它会停止返回数据。数据是空的。我做了一些这样的测试:

bitcoin.conf file:
server=1
rpcuser=myuser
rpcpassword=mypassword
rpcconnect=127.0.0.1
rpcport=8332

一些view.py:

def btc_rpc_connect(config):

    rpc_server_url = ("http://{user}:{password}@{host}:{port}").format(
        user=config.rpc_user,
        password=config.rpc_pass,
        host=config.rpc_host,
        port=config.rpc_port
    )
    rpc_conn = AuthServiceProxy(rpc_server_url)
    return rpc_conn

user = request.user
# getting rpc settings from db
config = ProjectSettings.objects.get(id=1)
rpc_connection = btc_rpc_connect(config)
btc_address = rpc_connection.getnewaddress(user.username)

我还尝试从django的./manage.py shell进行测试并手动输入此代码。事实是在dev服务器上工作,我在btc_address有一个地址,但在vps btc_address上是空的!请帮我。是否因为许可问题而发生?无论如何bitcoind接受连接并且不返回authentification异常,但是对任何命令都没有反应。

但如果我从控制台使用它:

bitcoin-cli getnewaddress 

它工作正常并给我一个地址。

1 个答案:

答案 0 :(得分:1)

Omg那是回购中的错误,几个月前我在当地修好了,忘掉了!如果您遇到同样的问题,可以在146行上手动修改lib/python2.7/site-packages/bitcoinrpc/authproxy.py删除else:,然后从return response['result']块移出elif,如下所示:https://github.com/jgarzik/python-bitcoinrpc/commit/8c0114bfbf7650d40a88b20d1e16ff79d768f3a9

另一种方法是删除python-bitcoinrpc:

pip uninstall python-bitcoinrpc

重新安装正确的版本:

pip install git+https://github.com/jgarzik/python-bitcoinrpc.git

希望他们能尽快修复它。