gpt4 book ai didi

python - 如何使这个 Twisted Python 代理更快?

转载 作者:太空狗 更新时间:2023-10-30 00:37:23 34 4
gpt4 key购买 nike

下面的代码是一个用于内容过滤的 HTTP 代理。它使用 GET 将当前站点的 URL 发送到服务器,并在其中对其进行处理和响应。它运行非常非常非常慢。关于如何让它更快的任何想法?

代码如下:

from twisted.internet import reactor
from twisted.web import http
from twisted.web.proxy import Proxy, ProxyRequest
from Tkinter import *
#import win32api
import urllib2
import urllib
import os
import webbrowser

cwd = os.path.abspath(sys.argv[0])[0]
proxies = {}
user = "zachb"
class BlockingProxyRequest(ProxyRequest):
def process(self):
params = {}
params['Location']= self.uri
params['User'] = user
params = urllib.urlencode(params)
req = urllib.urlopen("http://weblock.zbrowntechnology.info/ProgFiles/stats.php?%s" % params, proxies=proxies)
resp = req.read()
req.close()
if resp == "allow":
pass
else:
self.transport.write('''BLOCKED BY ADMIN!''')
self.transport.loseConnection()

ProxyRequest.process(self)

class BlockingProxy(Proxy):
requestFactory = BlockingProxyRequest
factory = http.HTTPFactory()
factory.protocol = BlockingProxy

reactor.listenTCP(8000, factory)
reactor.run()

有人知道如何让这个运行得更快吗?或者更好的写法?

最佳答案

这个代理缓慢的主要原因可能是这三行:

    req = urllib.urlopen("http://weblock.zbrowntechnology.info/ProgFiles/stats.php?%s" % params, proxies=proxies)
resp = req.read()
req.close()

一个普通的基于 Twisted 的应用程序是单线程的。你必须竭尽全力让线程参与进来。这意味着无论何时收到请求,您都会阻塞此 HTTP 请求的唯一处理线程。在此 HTTP 请求完成之前,不会处理进一步的请求。

尝试使用 twisted.web.client 中的 API 之一(例如 AgentgetPage )。这些 API 不会阻塞,因此您的服务器将同时处理并发请求。这应该转化为更短的响应时间。

关于python - 如何使这个 Twisted Python 代理更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4211454/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com