将所有请求重定向到 sanic 的更快方法?
Faster way of redirecting all requests to sanic?
我正在尝试重定向 sanic
网络服务器中的所有请求。因此,例如,如果有人访问 localhost:5595/example/hi
,它将转发到一个网站。我知道如何在 sanic
中正常执行此操作,但重定向 100 个 url 会很慢。有更快的方法吗?
我不能 100% 确定这是否是您要找的答案。但是,如果你问的是在 Sanic 中制作一个超级粗糙的代理服务器来重定向所有请求,这样的事情就可以了(参见 server1.py
)。
# server1.py
from sanic import Sanic
from sanic.response import redirect
app = Sanic("server1")
@app.route("/<path:path>")
async def proxy(request, path):
return redirect(f"http://localhost:9992/{path}")
app.run(port=9991)
所以我们有一个交通去处:
from sanic import Sanic
from sanic.response import text
app = Sanic("server1")
@app.route("/<foo>/<bar>")
async def endpoint(request, foo, bar):
return text(f"Did you know {foo=} and {bar=}?")
app.run(port=9992)
现在,让我们来测试一下:
$ curl localhost:9991/hello/world -Li
HTTP/1.1 302 Found
Location: http://localhost:9992/hello/world
content-length: 0
connection: keep-alive
content-type: text/html; charset=utf-8
HTTP/1.1 200 OK
content-length: 35
connection: keep-alive
content-type: text/plain; charset=utf-8
Did you know foo='hello' and bar='world'?
我正在尝试重定向 sanic
网络服务器中的所有请求。因此,例如,如果有人访问 localhost:5595/example/hi
,它将转发到一个网站。我知道如何在 sanic
中正常执行此操作,但重定向 100 个 url 会很慢。有更快的方法吗?
我不能 100% 确定这是否是您要找的答案。但是,如果你问的是在 Sanic 中制作一个超级粗糙的代理服务器来重定向所有请求,这样的事情就可以了(参见 server1.py
)。
# server1.py
from sanic import Sanic
from sanic.response import redirect
app = Sanic("server1")
@app.route("/<path:path>")
async def proxy(request, path):
return redirect(f"http://localhost:9992/{path}")
app.run(port=9991)
所以我们有一个交通去处:
from sanic import Sanic
from sanic.response import text
app = Sanic("server1")
@app.route("/<foo>/<bar>")
async def endpoint(request, foo, bar):
return text(f"Did you know {foo=} and {bar=}?")
app.run(port=9992)
现在,让我们来测试一下:
$ curl localhost:9991/hello/world -Li
HTTP/1.1 302 Found
Location: http://localhost:9992/hello/world
content-length: 0
connection: keep-alive
content-type: text/html; charset=utf-8
HTTP/1.1 200 OK
content-length: 35
connection: keep-alive
content-type: text/plain; charset=utf-8
Did you know foo='hello' and bar='world'?