Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 1, 2016 09:59:23

aiscy
Зарегистрирован: 2015-06-17
Сообщения: 52
Репутация: +  9  -
Профиль   Отправить e-mail  

OSError: [Errno 10048] в тесте aiohttp приложения

Здравствуйте. Извините, если не в тот раздел.
Хотел написать несколько py.test'ов для моего приложения на aiohttp, вот код теста:

 from aiohttp import web
async def hello(request):
    return web.Response(body=b'Hello, world')
def create_app(loop):
    app = web.Application(loop=loop)
    app.router.add_route('GET', '/', hello)
    return app
async def test_hello(test_client):
    client = await test_client(create_app)
    resp = await client.get('/')
    assert resp.status == 200
    text = await resp.text()
    assert 'Hello, world' in text
Но при запуске он вываливается с такой ошибкой:
 ...
# Disable IPv4/IPv6 dual stack support (enabled by
# default on Linux) which makes a single socket
# listen on both address families.
if af == AF_INET6 and hasattr(socket, 'IPPROTO_IPV6'):
    sock.setsockopt(socket.IPPROTO_IPV6,
                    socket.IPV6_V6ONLY,
                    True)
try:
    sock.bind(sa)
except OSError as err:
    raise OSError(err.errno, 'error while attempting '
                  'to bind on address %r: %s'
>   % (sa, err.strerror.lower()))
E   OSError: [Errno 10048] error while attempting to bind on address ('127.0.0.1', 65214): обычно разрешается только одно использование адреса сокета (протокол/сетевой адрес/порт)
C:\Python35\lib\asyncio\base_events.py:962: OSError
========================== 1 failed in 0.66 seconds ===========================
Вот код файла aiohttp\test_utils.py:
 def unused_port():
    """Return a port that is unused on the current host."""
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.bind(('127.0.0.1', 0))
        return s.getsockname()[1]
class TestServer:
    def __init__(self, app, *, scheme="http", host='127.0.0.1'):
        self.app = app
        self._loop = app.loop
        self.port = None
        self.server = None
        self.handler = None
        self._root = None
        self.host = host
        self.scheme = scheme
        self._closed = False
    @asyncio.coroutine
    def start_server(self, **kwargs):
        if self.server:
            return
        self.port = unused_port()
        self._root = '{}://{}:{}'.format(self.scheme, self.host, self.port)
        self.handler = self.app.make_handler(**kwargs)
Я обнаружил, что если изменю в нем self.port, например на 65214, который раньше выдавал ошибку, то тест проходит успешно. Может кто-нибудь знает, в чем может быть ошибка? Я использую Windows 7 x64, Python 3.5.2 в virtualenv, aiohttp 1.0.5, pytest 3.0.3, pytest-aiohttp 0.1.3.

Отредактировано aiscy (Ноя. 1, 2016 10:02:39)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version