aio-libs / aio-libs/aiohttp

How to override HTTP CONNECT

Offen
#4,571 9 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @asvetlov Auf GitHub ansehen
bug enhancement
Vorherrschende Sprache
Python
Sterne
16.5k
Forks
2.4k
Ø Merge
17 Std. 22 Min.
Gemergte PRs (30 T.)
212

Beschreibung

🐞 **Describe the bug**
I implement HTTP/HTTPS Proxy based on aiohttp and I need override HTTP connect method in subclass of aiohttp.web.View such as this guide

https://aiohttp.readthedocs.io/en/latest/web_reference.html

Overridable coroutine methods: connect(), delete(), get(), head(), options(), patch(), post(), put(), trace().

In this sample code, HTTP connect handler never called

💡 **To Reproduce**
```python
import asyncio

from aiohttp import web, hdrs
from aiohttp.log import logging as logger

class HttpProxyView(web.View):

async def get(self):
logger.debug('Handle {}'.format(self.request.path))
name = self.request.match_info.get('name', "Anonymous")
text = "Hello, " + name
return web.Response(text=text)

async def connect(self):
logger.debug('Start CONNECT to %s', self.request.path)

async def run_app(app, host, port):
runner = web.AppRunner(app)
await runner.setup()

site = web.TCPSite(runner, host, port)
await site.start()

while True:
await asyncio.sleep(3600)

if __name__ == '__main__':
logger.basicConfig(level=logger.DEBUG)

app = web.Application()
app.add_routes([
web.view('/', HttpProxyView),
web.view('/{name:.*}', HttpProxyView)])

loop = asyncio.get_event_loop()
try:
loop.run_until_complete(run_app(app, host='0.0.0.0', port=8080))
except KeyboardInterrupt:
pass
```

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.