"""
try:
s = next(gen)
- sel = DefaultSelector()
- while 1:
- sel.register(fileno, s)
- rlist = None
- while not rlist:
- rlist = sel.select(timeout=timeout)
- sel.unregister(fileno)
- # note: this line should require a cast, but mypy doesn't complain
- ready: Ready = rlist[0][1]
- assert s & ready
- s = gen.send(ready)
+ with DefaultSelector() as sel:
+ while 1:
+ sel.register(fileno, s)
+ rlist = None
+ while not rlist:
+ rlist = sel.select(timeout=timeout)
+ sel.unregister(fileno)
+ # note: this line should require a cast, but mypy doesn't complain
+ ready: Ready = rlist[0][1]
+ assert s & ready
+ s = gen.send(ready)
except StopIteration as ex:
rv: RV = ex.args[0] if ex.args else None
timeout = timeout or None
try:
fileno, s = next(gen)
- sel = DefaultSelector()
- while 1:
- sel.register(fileno, s)
- rlist = sel.select(timeout=timeout)
- sel.unregister(fileno)
- if not rlist:
- raise e.OperationalError("timeout expired")
- ready: Ready = rlist[0][1] # type: ignore[assignment]
- fileno, s = gen.send(ready)
+ with DefaultSelector() as sel:
+ while 1:
+ sel.register(fileno, s)
+ rlist = sel.select(timeout=timeout)
+ sel.unregister(fileno)
+ if not rlist:
+ raise e.OperationalError("timeout expired")
+ ready: Ready = rlist[0][1] # type: ignore[assignment]
+ fileno, s = gen.send(ready)
except StopIteration as ex:
rv: RV = ex.args[0] if ex.args else None
try:
s = next(gen)
- epoll = select.epoll()
- evmask = poll_evmasks[s]
- epoll.register(fileno, evmask)
- while 1:
- fileevs = None
- while not fileevs:
- fileevs = epoll.poll(timeout)
- ev = fileevs[0][1]
- ready = 0
- if ev & ~select.EPOLLOUT:
- ready = Ready.R
- if ev & ~select.EPOLLIN:
- ready |= Ready.W
- assert s & ready
- s = gen.send(ready)
+ with select.epoll() as epoll:
evmask = poll_evmasks[s]
- epoll.modify(fileno, evmask)
+ epoll.register(fileno, evmask)
+ while 1:
+ fileevs = None
+ while not fileevs:
+ fileevs = epoll.poll(timeout)
+ ev = fileevs[0][1]
+ ready = 0
+ if ev & ~select.EPOLLOUT:
+ ready = Ready.R
+ if ev & ~select.EPOLLIN:
+ ready |= Ready.W
+ assert s & ready
+ s = gen.send(ready)
+ evmask = poll_evmasks[s]
+ epoll.modify(fileno, evmask)
except StopIteration as ex:
rv: RV = ex.args[0] if ex.args else None
conn2 = psycopg.connect(dsn)
try:
t0 = time.time()
- sel = selectors.DefaultSelector()
- sel.register(conn, selectors.EVENT_READ)
- t = threading.Thread(target=closer)
- t.start()
- try:
- assert sel.select(timeout=1.0)
- with pytest.raises(psycopg.OperationalError):
- conn.execute("select 1")
- t1 = time.time()
- assert 0.3 < t1 - t0 < 0.6
- finally:
- t.join()
+ with selectors.DefaultSelector() as sel:
+ sel.register(conn, selectors.EVENT_READ)
+ t = threading.Thread(target=closer)
+ t.start()
+ try:
+ assert sel.select(timeout=1.0)
+ with pytest.raises(psycopg.OperationalError):
+ conn.execute("select 1")
+ t1 = time.time()
+ assert 0.3 < t1 - t0 < 0.6
+ finally:
+ t.join()
finally:
conn.close()
conn2.close()