Mae PoolTimeout yn golygu na allai HTTPX gael cysylltiad o’i bwll o fewn yr amser aros wedi’i osod. Nid yw’n dystiolaeth bod cysylltiad TCP newydd â’r dirprwy wedi mynd dros amser. Efallai bod yr ail gais yn dal i aros y tu mewn i’ch proses.

Mae hyn yn hawdd ei ail-greu pan fo’r cleient yn caniatáu un cysylltiad a’r ymateb ffrydio cyntaf yn cael ei adael ar agor. Nid yw dechrau cais arall yn rhyddhau’r cysylltiad hwnnw ar ei ben ei hun.

Gwnewch gyfrifoldeb dros yr ymateb ffrydio yn glir

import httpx

limits = httpx.Limits(
    max_connections=1,
    max_keepalive_connections=1,
)
timeout = httpx.Timeout(
    connect=5, read=10, write=10, pool=1
)

with httpx.Client(
    proxy="http://203.0.113.10:8080",
    trust_env=False,
    limits=limits,
    timeout=timeout,
) as client:
    with client.stream("GET", "https://example.com/") as response:
        print(response.status_code)
        for chunk in response.iter_bytes():
            print(len(chunk))

    next_response = client.get("https://example.com/")
    print(next_response.status_code)

Newidiwch gyfeiriad dirprwy’r ddogfennaeth cyn rhedeg. Mae’r cais nesaf yn dechrau ar ôl gadael cyd-destun y ffrwd. Mae gadael yn cau’r ymateb hyd yn oed os yw’r cod yn torri allan o’r ddolen neu’n codi eithriad.

Wrth ffrydio â llaw, megis client.send(request, stream=True), eich cod sy’n gyfrifol am y cau terfynol. Ar gyfer AsyncClient, arhosir am y glanhau â llaw cyfatebol gyda response.aclose(). Mae cau ymateb heb ei ddarllen yn rhyddhau capasiti, ond gall olygu taflu’r cysylltiad sylfaenol yn hytrach na’i ailddefnyddio.

Darllenwch enw’r eithriad

Mae ConnectTimeout yn ymwneud â sefydlu cysylltiad. Mae ReadTimeout yn ymwneud ag aros am ddata ymateb. Mae PoolTimeout yn ymwneud â chael lle cysylltiad. Mae logio «terfyn amser dirprwy» yn unig yn colli’r gwahaniaeth sydd ei angen i ddewis ateb.

Gwiriwch ymatebion agored, tasgau cydamserol a chyfyngiadau cysylltiad cyn newid IPau pwyntiau terfyn. Gall pwll mwy fod yn addas i lwyth cydamserol dilys, ond nid yw’n cywiro ymatebion nad ydynt byth yn cau. Dim ond rhoi mwy o gapasiti i’r ap ei feddiannu y mae.

Cadwch y cleient yn ailddefnyddiadwy ar draws y llwyth gwaith. Gall ailadeiladu cleient i wneud i bob cais ymddangos yn gweithio guddio problem cylch oes a cholli ailddefnyddio cysylltiadau.

Erthyglau cysylltiedig