Я создал очень простой прокси-сервер, использующий Twisted, который возвращает веб-страницы из Интернета.
Я хочу, чтобы сервер имел два состояния:
Любой URL запрашивается из Интернета и возвращается (как в обычном прокси-сервере).
Для любого URL мы сначала ищем, чтобы увидеть, есть ли у нас копия, хранящаяся локально (и если да, то вернуть ее).В противном случае мы запрашиваем URL из Интернета, сохраняем результат и затем возвращаем результат.
В настоящее время я только что реализовал (1), используя один из базовых примеров в Twisted.
# proxy.py
from twisted.web import proxy, http
from twisted.internet import protocol, reactor
from twisted.python import log
import sys
log.startLogging(sys.stdout)
class ProxyFactory(http.HTTPFactory):
protocol = proxy.Proxy
if __name__ == '__main__':
reactor.listenTCP(8080, ProxyFactory())
reactor.run()
Это можно проверить, запустив, например,
python proxy.py
и в другом терминале
curl -x localhost:8080 http://example.com
Как мне изменить этот код, чтобы он включал функциональность для (2)