1
1
mirror of https://github.com/explosion/spaCy.git synced 2025-01-20 22:34:32 +03:00

Merge pull request from zhiiw/feature_port

check port in use and add itself
This commit is contained in:
Zhangrp 2022-12-06 20:52:44 +08:00 committed by GitHub
commit 83aa6ff92c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 9 deletions
spacy

View File

@ -11,6 +11,7 @@ from .render import DependencyRenderer, EntityRenderer, SpanRenderer
from ..tokens import Doc, Span
from ..errors import Errors, Warnings
from ..util import is_in_jupyter
from ..util import is_port_in_use
_html = {}
@ -74,14 +75,14 @@ def render(
def serve(
docs: Union[Iterable[Doc], Doc],
style: str = "dep",
page: bool = True,
minify: bool = False,
options: Dict[str, Any] = {},
manual: bool = False,
port: int = 5000,
host: str = "0.0.0.0",
docs: Union[Iterable[Doc], Doc],
style: str = "dep",
page: bool = True,
minify: bool = False,
options: Dict[str, Any] = {},
manual: bool = False,
port: int = 5000,
host: str = "0.0.0.0",
) -> None:
"""Serve displaCy visualisation.
@ -99,9 +100,15 @@ def serve(
"""
from wsgiref import simple_server
if is_port_in_use(port):
port += 1
while is_port_in_use(port) and port < 65535:
port += 1
if is_in_jupyter():
warnings.warn(Warnings.W011)
render(docs, style=style, page=page, minify=minify, options=options, manual=manual)
httpd = simple_server.make_server(host, port, app)
print(f"\nUsing the '{style}' visualizer")
print(f"Serving on http://{host}:{port} ...\n")

View File

@ -31,7 +31,7 @@ import shlex
import inspect
import pkgutil
import logging
import socket
try:
import cupy.random
except ImportError:
@ -1736,3 +1736,8 @@ def all_equal(iterable):
(or if the input is an empty sequence), False otherwise."""
g = itertools.groupby(iterable)
return next(g, True) and not next(g, False)
def is_port_in_use(port):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
return s.connect_ex(('localhost', port)) == 0