本文整理汇总了Python中yarl.URL.with_host方法的典型用法代码示例。如果您正苦于以下问题:Python URL.with_host方法的具体用法?Python URL.with_host怎么用?Python URL.with_host使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类yarl.URL
的用法示例。
在下文中一共展示了URL.with_host方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: run_app
# 需要导入模块: from yarl import URL [as 别名]
# 或者: from yarl.URL import with_host [as 别名]
def run_app(app, *, host='0.0.0.0', port=None,
shutdown_timeout=60.0, ssl_context=None,
print=print, backlog=128, access_log_format=None,
access_log=access_logger):
"""Run an app locally"""
if port is None:
if not ssl_context:
port = 8080
else:
port = 8443
loop = app.loop
make_handler_kwargs = dict()
if access_log_format is not None:
make_handler_kwargs['access_log_format'] = access_log_format
handler = app.make_handler(access_log=access_log,
**make_handler_kwargs)
server = loop.create_server(handler, host, port, ssl=ssl_context,
backlog=backlog)
srv, startup_res = loop.run_until_complete(asyncio.gather(server,
app.startup(),
loop=loop))
scheme = 'https' if ssl_context else 'http'
url = URL('{}://localhost'.format(scheme))
url = url.with_host(host).with_port(port)
print("======== Running on {} ========\n"
"(Press CTRL+C to quit)".format(url))
try:
loop.run_forever()
except KeyboardInterrupt: # pragma: no cover
pass
finally:
srv.close()
loop.run_until_complete(srv.wait_closed())
loop.run_until_complete(app.shutdown())
loop.run_until_complete(handler.finish_connections(shutdown_timeout))
loop.run_until_complete(app.cleanup())
loop.close()
示例2: _make_server_creators
# 需要导入模块: from yarl import URL [as 别名]
# 或者: from yarl.URL import with_host [as 别名]
def _make_server_creators(handler, *, loop, ssl_context,
host, port, path, sock, backlog):
scheme = 'https' if ssl_context else 'http'
base_url = URL('{}://localhost'.format(scheme)).with_port(port)
if path is None:
paths = ()
elif isinstance(path, (str, bytes, bytearray, memoryview))\
or not isinstance(path, Iterable):
paths = (path,)
else:
paths = path
if sock is None:
socks = ()
elif not isinstance(sock, Iterable):
socks = (sock,)
else:
socks = sock
if host is None:
if (paths or socks) and not port:
hosts = ()
else:
hosts = ("0.0.0.0",)
elif isinstance(host, (str, bytes, bytearray, memoryview))\
or not isinstance(host, Iterable):
hosts = (host,)
else:
hosts = host
if hosts and port is None:
port = 8443 if ssl_context else 8080
server_creations = []
uris = [str(base_url.with_host(host)) for host in hosts]
if hosts:
# Multiple hosts bound to same server is available in most loop
# implementations, but only send multiple if we have multiple.
host_binding = hosts[0] if len(hosts) == 1 else hosts
server_creations.append(
loop.create_server(
handler, host_binding, port, ssl=ssl_context, backlog=backlog
)
)
for path in paths:
# Most loop implementations don't support multiple paths bound in same
# server, so create a server for each.
server_creations.append(
loop.create_unix_server(
handler, path, ssl=ssl_context, backlog=backlog
)
)
uris.append('{}://unix:{}:'.format(scheme, path))
# Clean up prior socket path if stale and not abstract.
# CPython 3.5.3+'s event loop already does this. See
# https://github.com/python/asyncio/issues/425
if path[0] not in (0, '\x00'): # pragma: no branch
try:
if stat.S_ISSOCK(os.stat(path).st_mode):
os.remove(path)
except FileNotFoundError:
pass
for sock in socks:
server_creations.append(
loop.create_server(
handler, sock=sock, ssl=ssl_context, backlog=backlog
)
)
if hasattr(socket, 'AF_UNIX') and sock.family == socket.AF_UNIX:
uris.append('{}://unix:{}:'.format(scheme, sock.getsockname()))
else:
host, port = sock.getsockname()
uris.append(str(base_url.with_host(host).with_port(port)))
return server_creations, uris
示例3: test_with_host_non_ascii
# 需要导入模块: from yarl import URL [as 别名]
# 或者: from yarl.URL import with_host [as 别名]
def test_with_host_non_ascii():
url = URL("http://example.com:123")
url2 = url.with_host("историк.рф")
assert url2.raw_host == "xn--h1aagokeh.xn--p1ai"
assert url2.host == "историк.рф"
示例4: test_with_host_invalid_type
# 需要导入模块: from yarl import URL [as 别名]
# 或者: from yarl.URL import with_host [as 别名]
def test_with_host_invalid_type():
url = URL("http://example.com:123")
with pytest.raises(TypeError):
url.with_host(None)
示例5: test_with_host
# 需要导入模块: from yarl import URL [as 别名]
# 或者: from yarl.URL import with_host [as 别名]
def test_with_host():
url = URL("http://example.com:123")
assert str(url.with_host("example.org")) == "http://example.org:123"
示例6: test_with_host_empty
# 需要导入模块: from yarl import URL [as 别名]
# 或者: from yarl.URL import with_host [as 别名]
def test_with_host_empty():
url = URL("http://example.com:123")
with pytest.raises(ValueError):
url.with_host("")
示例7: test_from_str_with_host_ipv4
# 需要导入模块: from yarl import URL [as 别名]
# 或者: from yarl.URL import with_host [as 别名]
def test_from_str_with_host_ipv4():
url = URL("http://host:80")
url = url.with_host("192.168.1.1")
assert url.raw_host == "192.168.1.1"
示例8: test_from_str_with_host_ipv6
# 需要导入模块: from yarl import URL [as 别名]
# 或者: from yarl.URL import with_host [as 别名]
def test_from_str_with_host_ipv6():
url = URL("http://host:80")
url = url.with_host("::1")
assert url.raw_host == "::1"
示例9: run_app
# 需要导入模块: from yarl import URL [as 别名]
# 或者: from yarl.URL import with_host [as 别名]
def run_app(app, *, host=None, port=None, path=None,
shutdown_timeout=60.0, ssl_context=None,
print=print, backlog=128, access_log_format=None,
access_log=access_logger):
"""Run an app locally"""
loop = app.loop
make_handler_kwargs = dict()
if access_log_format is not None:
make_handler_kwargs['access_log_format'] = access_log_format
handler = app.make_handler(access_log=access_log,
**make_handler_kwargs)
loop.run_until_complete(app.startup())
scheme = 'https' if ssl_context else 'http'
base_url = URL('{}://localhost'.format(scheme)).with_port(port)
if path is None:
paths = ()
elif isinstance(path, (str, bytes, bytearray, memoryview))\
or not isinstance(path, Iterable):
paths = (path,)
else:
paths = path
if host is None:
if paths and not port:
hosts = ()
else:
hosts = ("0.0.0.0",)
elif isinstance(host, (str, bytes, bytearray, memoryview))\
or not isinstance(host, Iterable):
hosts = (host,)
else:
hosts = host
if hosts and port is None:
port = 8443 if ssl_context else 8080
server_creations = []
uris = [str(base_url.with_host(host)) for host in hosts]
if hosts:
# Multiple hosts bound to same server is available in most loop
# implementations, but only send multiple if we have multiple.
host_binding = hosts[0] if len(hosts) == 1 else hosts
server_creations.append(
loop.create_server(
handler, host_binding, port, ssl=ssl_context, backlog=backlog
)
)
for path in paths:
# Most loop implementations don't support multiple paths bound in same
# server, so create a server for each.
server_creations.append(
loop.create_unix_server(
handler, path, ssl=ssl_context, backlog=backlog
)
)
uris.append('{}://unix:{}:'.format(scheme, path))
# Clean up prior socket path if stale and not abstract.
# CPython 3.5.3+'s event loop already does this. See
# https://github.com/python/asyncio/issues/425
if path[0] not in (0, '\x00'): # pragma: no branch
try:
if stat.S_ISSOCK(os.stat(path).st_mode):
os.remove(path)
except FileNotFoundError:
pass
servers = loop.run_until_complete(
asyncio.gather(*server_creations, loop=loop)
)
print("======== Running on {} ========\n"
"(Press CTRL+C to quit)".format(', '.join(uris)))
try:
loop.run_forever()
except KeyboardInterrupt: # pragma: no cover
pass
finally:
server_closures = []
for srv in servers:
srv.close()
server_closures.append(srv.wait_closed())
loop.run_until_complete(asyncio.gather(*server_closures, loop=loop))
loop.run_until_complete(app.shutdown())
loop.run_until_complete(handler.shutdown(shutdown_timeout))
loop.run_until_complete(app.cleanup())
loop.close()