我正在尝试使用Python使用cgminer
的API。我对使用requests
库特别感兴趣。
我知道如何在requests
中做基本的事情,但是cgminer
希望更具体一些。我想收缩一下
import socket
import json
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 4028))
sock.send(json.dumps({'command': 'summary'}))
改为使用requests
。
如何使用该库指定端口,如何发送这样的json请求并等待存储在变量中的响应?
作为一个很难理解python网络的一些常见陷阱的人,我添加这个答案是为了强调一个重要但容易混淆的要点,即
requests.get()
的第一个参数:localhost
是计算机解析为其自身环回适配器的IP地址127.0.0.1
的别名。foo.com
也是一个别名,只是一个在远离宿主的地方得到解析的别名。对于环回:
这一个需要
import socket
&;为您提供主机的本地ip(也就是您在自己局域网中的地址);它与主机的距离比只调用localhost
要远一点,但不是一直到开放的internet:Request是一个HTTP库。
您可以在URL http://example.com:4028/….中指定端口。。。。
但是,从我可以快速阅读的内容来看,here
cgminer
提供了一个RPCAPI(或者JSON RPC?)不是一个HTTP接口。您可以用冒号指定请求的端口,就像在浏览器中一样,例如
r = requests.get('http://localhost:4028')
。在收到响应或请求超时之前,这将被阻塞,因此您不必担心等待响应。可以使用^{} method with the ^{} parameter 将JSON数据作为POST请求发送,例如
然后可以使用
r.text
或r.json()
访问响应。请注意,请求是一个HTTP库-如果它不是您想要的HTTP,那么我不认为它可以使用请求。
相关问题 更多 >
编程相关推荐