Я использую скрипт 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