ProxyAgent പെട്ടെന്ന് കണക്ട് ചെയ്ത് പിന്നീട് പ്രതികരണ ബോഡിക്കായി അനിശ്ചിതമായി കാത്തിരിക്കാം. അതിന്റെ പ്രോക്സി എൻഡ്‌പോയിന്റിന്റെ കണക്ഷൻ ടൈംഔട്ട് ആ പിന്നീടുള്ള കാത്തിരിപ്പിനെ വിവരിക്കുന്നില്ല.

ഏജന്റ് നിർമ്മിക്കുമ്പോൾ എൻഡ്‌പോയിന്റിൽ ഒരു കണക്ഷൻ പരിധി സജ്ജമാക്കുക. താഴെയുള്ള പൊതു HTTP അഭ്യർത്ഥനയിൽ, പൊതു ഇടനിലക്കാരെ അനുവദിച്ചാൽ 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-ഉം കോൺഫിഗർ ചെയ്ത ഏജന്റും ഉണ്ടെന്ന് അനുമാനിക്കുന്നു. ProxyAgent-ന്റെ അഭ്യർത്ഥന Deferred ഒരു പ്രതികരണ ഒബ്ജക്റ്റ് നൽകുന്നു; readBody ബോഡിയുടെ Deferred നൽകുന്നു. അത് callback-ൽ നിന്ന് തിരികെ നൽകുന്നത് ശൃംഖലയെ ആ പ്രവർത്തനത്തിനും കാത്തിരിക്കാൻ പ്രേരിപ്പിക്കുന്നു.

സ്ഥാനം പ്രധാനമാണ്. Twisted addTimeout അതിന് മുമ്പ് ഇൻസ്റ്റാൾ ചെയ്ത callback-കൾ പ്രതിനിധീകരിക്കുന്ന ജോലിയിൽ പ്രയോഗിക്കുന്നു. പിന്നീട് ബോഡി റീഡർ ചേർത്താൽ മറ്റൊരു അതിർത്തി വിവരിക്കും. ഈ ക്രമീകരണത്തിൽ ടൈമർ addTimeout വിളിക്കുമ്പോൾ ആരംഭിക്കുകയും ആ ശൃംഖലയിലെ തീർപ്പാക്കാത്ത അഭ്യർത്ഥനയും ബോഡി ജോലിയും ഉൾക്കൊള്ളുകയും ചെയ്യുന്നു.

വലിയതോ പരിധിയില്ലാത്തതോ ആയ ബോഡികൾക്ക് സ്ട്രീമിംഗ് ഉപഭോക്താവ് ഉപയോഗിക്കുകയും അതിന്റെ പൂർത്തീകരണം അതേ രീതിയിൽ പ്രതിനിധീകരിക്കുകയും ചെയ്യുക. ക്ലയന്റ് വശത്തുള്ള സമയപരിധി നിങ്ങളുടെ ആപ്ലിക്കേഷൻ എത്ര കാത്തിരിക്കുമെന്ന് പരിമിതപ്പെടുത്തുന്നു; അത് പ്രോക്സിയുടെ സ്വന്തം അപ്‌സ്ട്രീം കണക്ഷൻ ടൈംഔട്ട് പുനഃക്രമീകരിക്കുന്നില്ല.

അനുബന്ധ ലേഖനങ്ങൾ