Python - OSError: [Errno 99] Невозможно назначить запрошенный адрес - PullRequest
0 голосов
/ 21 октября 2019

Я использую скрипт Python для запроса RPC-сервера, расположенного на другом компьютере в пределах одной локальной сети. Однако я часто получал OSError: [Errno 99] Cannot assign requested address. Я погуглил проблему и обнаружил, что некоторые люди, столкнувшиеся с той же проблемой, решили ее, используя локальный IP-адрес. Итак, я переместил удаленный RPC-сервер на локальную машину и связал RPC с 127.0.0.1. Но я все еще получаю много OSError: [Errno 99] Cannot assign requested address.

Мой скрипт Python использует concurrent.futures ProcessPoolExecutor для выполнения нескольких вызовов параллельно. Если я уменьшу количество рабочих с 10-20 до 2-4, то получаю ошибку выше реже.

Я не могу понять, связана ли эта ошибка с питоном, сервером rpc или ОС. Я использую Centos 7 и Python 3.6.

Я использую общую обработку исключений для этого сценария. Что делать, чтобы избежать этой ошибки и как изящно обработать ее, даже если эта ошибка возникнет снова?

def data_processing(rpc_parameters):
    # some code
    try:
        rpc1 =  get_rpc_connection()
        rpc_response =  rpc1.rpc_call()

        # rpc_response processing
    except Exception as e:
        print("e:", e, traceback.format_exc())
        time.sleep(1)
        rpc1 = get_rpc_connection()
        data_processing(rpc_parameters)


def main_func():
    with concurrent.futures.ProcessPoolExecutor(max_workers=20) as executor:
        processed_data_list = executor.map(data_processing, data_list[1:])

RPC-сервер, в данном случае это альткойн со следующими настройками в своем конфигурационном файле:

rpcbind=127.0.0.1
rpcallowip=127.0.0.1

rpcthreads=200
rpcworkqueue=800
rpcservertimeout=360
rpcclienttimeout=3600
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...