ໃຫ້ຄຳຮ້ອງສະຫຼາຍ proxy ຂອງ Twisted ມີກຳນົດເວລາສຳລັບເນື້ອຄວາມ
ລວມເວລາກຳນົດການເຊື່ອມຕໍ່ຂອງຈຸດປາຍ proxy ກັບກຳນົດເວລາ Deferred ທີ່ຄຸມການອ່ານເນື້ອຄວາມຕອບສະໜອງນ້ອຍໆນຳ.
ProxyAgent ສາມາດເຊື່ອມຕໍ່ໄດ້ໄວແລ້ວລໍຖ້າເນື້ອຄວາມຕອບສະໜອງແບບບໍ່ມີກຳນົດ. ເວລາກຳນົດການເຊື່ອມຕໍ່ຂອງຈຸດປາຍ proxy ບໍ່ໄດ້ອະທິບາຍການລໍຖ້າພາຍຫຼັງນັ້ນ.
ຕັ້ງຂອບເຂດການເຊື່ອມຕໍ່ຢູ່ຈຸດປາຍຕອນສ້າງ agent. ສຳລັບຄຳຮ້ອງ HTTP ສາທາລະນະຂ້າງລຸ່ມ, ຜູ້ສະໝັກທີ່ບໍ່ໄດ້ຢືນຢັນຈາກ ລາຍຊື່ proxy HTTP ສາມາດປ່ຽນທີ່ຢູ່ໄດ້ຖ້າອະນຸຍາດໃຫ້ມີຕົວກາງສາທາລະນະ:
endpoint = TCP4ClientEndpoint(reactor, 'proxy.example', 8080,
timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)
ສຳລັບການຕອບສະໜອງນ້ອຍທີ່ທ່ານຕ້ອງການເກັບໃນຫນ່ວຍຄວາມຈຳ, ໃຫ້ລວມການອ່ານເນື້ອຄວາມໃນລະບົບ Deferred ກ່ອນເພີ່ມກຳນົດເວລາ:
from twisted.web.client import readBody
d = agent.request(b'GET', b'http://example.com/')
d.addCallback(readBody)
d.addTimeout(10, reactor)
d.addCallback(lambda body: print(len(body)))
d.addErrback(lambda failure: print(failure.getErrorMessage()))
ສ່ວນນີ້ສົມມຸດວ່າແອັບຯມີ reactor ແລະ agent ທີ່ຕັ້ງຄ່າແລ້ວ. Deferred ຂອງຄຳຮ້ອງ ProxyAgent ໃຫ້ວັດຖຸຕອບສະໜອງ; readBody ສົ່ງຄືນ Deferred ສຳລັບເນື້ອຄວາມ. ການສົ່ງຄືນຈາກ callback ເຮັດໃຫ້ລະບົບລໍຖ້າການດຳເນີນການນັ້ນນຳ.
ຕຳແໜ່ງສຳຄັນ. Twisted ໃຊ້ addTimeout ກັບວຽກທີ່ callback ທີ່ຕິດຕັ້ງກ່ອນໜ້ານັ້ນສະແດງເຖິງ. ການເພີ່ມຕົວອ່ານເນື້ອຄວາມພາຍຫຼັງຈະອະທິບາຍຂອບເຂດອື່ນ. ໃນການຈັດວາງນີ້ ໂມງຈັບເວລາເລີ່ມຕອນເອີ້ນ addTimeout ແລະຄຸມຄຳຮ້ອງທີ່ຄ້າງຢູ່ກັບວຽກເນື້ອຄວາມໃນລະບົບນັ້ນ.
ໃຊ້ຜູ້ບໍລິໂພກແບບສະຕຣີມສຳລັບເນື້ອຄວາມໃຫຍ່ຫຼືບໍ່ມີຂອບເຂດ ແລະສະແດງການສຳເລັດໃນແບບດຽວກັນ. ກຳນົດເວລາຝັ່ງລູກຄ້າຈຳກັດເວລາທີ່ແອັບຯຂອງທ່ານລໍຖ້າ; ມັນບໍ່ໄດ້ຕັ້ງຄ່າເວລາກຳນົດການເຊື່ອມຕໍ່ຂຶ້ນໄປຂອງ proxy ຄືນໃໝ່.