相关疑难解决方法(0)

在python中轮询键盘(检测按键)

如何从控制台python应用程序轮询键盘?具体来说,我想在许多其他I/O活动(套接字选择,串行端口访问等)中做类似的事情:

   while 1:
      # doing amazing pythonic embedded stuff
      # ...

      # periodically do a non-blocking check to see if
      # we are being told to do something else
      x = keyboard.read(1000, timeout = 0)

      if len(x):
          # ok, some key got pressed
          # do something
Run Code Online (Sandbox Code Playgroud)

在Windows上执行此操作的正确pythonic方法是什么?此外,Linux的可移植性也不错,但并不是必需的.

python keyboard console nonblocking blocking

60
推荐指数
8
解决办法
12万
查看次数

Python3 urllib.request不会立即关闭连接

我有以下代码来运行连续循环来从网站获取一些内容:

from http.cookiejar import CookieJar
from urllib import request

cj = CookieJar()
cp = request.HTTPCookieProcessor(cj)
hh = request.HTTPHandler()
opener = request.build_opener(cp, hh)

while True:
    # build url
    req = request.Request(url=url)
    p = opener.open(req)
    c = p.read()
    # process c
    p.close()
    # check for abort condition, or continue
Run Code Online (Sandbox Code Playgroud)

内容被正确读取.但由于某种原因,TCP连接不会关闭.我正在观察来自dd-wrt路由器接口的活动连接数,并且它一直在上升.如果脚本继续运行,它将耗尽路由器的4096连接限制.发生这种情况时,脚本只需进入等待状态(路由器不允许新连接,但超时尚未命中).几分钟后,这些连接将被关闭,脚本可以再次恢复.

我能够观察到路由器悬挂连接的状态.它们共享相同的状态:TIME_WAIT.

我希望这个脚本同时使用不超过1个TCP连接.我究竟做错了什么?

我在Mac OS X 10.10上使用Python 3.4.2.

python macos urllib python-3.x

7
推荐指数
1
解决办法
1138
查看次数

httplib重用TCP连接吗?

我正在使用httplib从一个网站获取大量资源,我想以最低的成本,所以我在我的请求上设置'连接:保持活动'HTTP标头,但我不确定它实际上使用相同的TCP连接尽可能多的请求与网络服务器允许.

i = 0
    while 1:
        i += 1
        print i
        con = httplib.HTTPConnection("myweb.com")
        con.request("GET", "/x.css", headers={"Connection":" keep-alive"})
        result = con.getresponse()
        print result.reason, result.getheaders()
Run Code Online (Sandbox Code Playgroud)

我的实施是对的吗?保持活力吗?我应该把'con = httplib.HTTPConnection("myweb.com")'放出循环吗?

PS:网络服务器对keep-alive的响应没问题,我知道urllib3

python httplib

4
推荐指数
1
解决办法
8966
查看次数