在请求中设置端口

2ma*_*mac 15 python networking python-3.x python-requests

我正在尝试cgminer使用Python 来使用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'}))
Run Code Online (Sandbox Code Playgroud)

使用requests而不是.

如何使用该库指定端口,以及如何发送这样的json请求并等待响应存储在变量中?

Rob*_*xal 16

正如有人谁也学到了一些蟒蛇网络硬盘的方式常见的陷阱中,我加入这个答案要强调的一个重要但很容易混乱,约占点的第一个ARGrequests.get():

localhost是计算机解析为的别名,127.0.0.1它是自己的环回适配器的IP地址.foo.com也是一个别名,只是一个远离主机解决的别名.

requests.get('foo.com:4028')                #<--fails
requests.get('http://foo.com:4028')         #<--works usually  
Run Code Online (Sandbox Code Playgroud)

&for loopbacks:

requests.get('http://127.0.0.1:4028')       #<--works
requests.get('http://localhost:4028')       #<--works
Run Code Online (Sandbox Code Playgroud)

这个需要import socket并为您提供主机的本地IP(也就是您在自己的局域网内的地址); 它离主机比离主机更远一点localhost,但不是一直到开放互联网:

requests.get('http://{}:4028'.format(socket.gethostbyname(socket.gethostname())))  #<--works
Run Code Online (Sandbox Code Playgroud)


Syl*_*oux 13

Request是一个HTTP库.

您可以在URL http://example.com:4028/中指定端口....

但是,从我可以在匆忙读这里 cgminer提供了一个RPC API(或JSON RPC?)不是HTTP 接口.