Менять NI C, используемый моим сценарием aiohttp в GCE? - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь запустить скрипт, который отправляет трафик c с 2 или 3 IP-адресов одновременно. Я установил скрипт на платформе GCE под управлением Ubuntu. Я использую aiohttp для асинхронной отправки масштабируемого количества запросов X на конечную точку specfi c.

        def fetch(url_query, session):

        #build URL query

        async with session.get(search_query_feed_url, headers=headers) as response:

             response_string = await response.text()
             return response_string

        .................
        .................
        .................

        async def fetch_all(kw_list, loop, num_connections):

            connector = TCPConnector(limit=num_connections) #local testing method
            async with ClientSession(loop=loop, connector=connector) as session: 

                results = await asyncio.gather(*[fetch(query_argument, session) for kw in kw_list], return_exceptions=False) #run awaitable functions concurrently
                return results

Что я хочу, это через определенный промежуток времени переключать сетевую карту моего компьютера использует для отправки и получения трафика c. В моей (предположительно для начинающих) настройке GCE у меня развернут экземпляр виртуальной машины, подключенный к нескольким сетям VP C, каждая из которых имеет свой собственный определенный внешний IP-адрес. Подтверждено, что к моему экземпляру подключено несколько сетевых карт, и я вижу внутренний IP-адрес, по которому они вещают. Как бы я go определил в приведенном выше коде, какой NI C использовать для запросов?

Вначале я пытался установить аргумент local_addr для TCPConnector как внутреннего IP-адреса сетевого интерфейса. сам. Это, похоже, не работает, поскольку конечная точка этого эксперимента показывает, что запрос поступает с того же внешнего IP-адреса, что и всегда (по умолчанию).

Я немного новичок в использовании нескольких IP-адресов на одном компьютере. поэтому мой Лин go может быть не верным. Любые указатели здесь будут оценены.

...