новичок и первый в истории вопрос здесь.
Я использую многопроцессорный модуль Python, который в настоящее время создает менеджер и пару (45) процессов на моем локальном хосте.
Мой менеджер настроен следующим образом:
manager = QueueManager(address=('', 50000), authkey='abracadabra')
manager.get_server().serve_forever()
Я хочу также создать некоторые другие клиентские процессы удаленно на другом компьютере. Итак, допустим, мой IP-адрес a.b.c.d, менеджер клиента на удаленном компьютере настроен следующим образом:
manager = QueueManager(address=('a.b.c.d', 50000), authkey='abracadabra')
manager.connect()
(да, он скопирован из документации).
Тем не менее, я запускаю сервер и все 45 процессов на локальном хосте в порядке, затем я запускаю удаленный клиент и получаю следующее:
Traceback (most recent call last):
File "govmap-parallel-crawler-client.py", line 144, in <module>
manager.connect()
File "/usr/lib/python2.6/multiprocessing/managers.py", line 474, in connect
conn = Client(self._address, authkey=self._authkey)
File "/usr/lib/python2.6/multiprocessing/connection.py", line 134, in Client
c = SocketClient(address)
File "/usr/lib/python2.6/multiprocessing/connection.py", line 252, in SocketClient
s.connect(address)
File "<string>", line 1, in connect
socket.error: [Errno 110] Connection timed out
Оба компьютера могут без проблем проверять и пинговать друг друга.
Мое предположение: между ними есть один (или два!) Межсетевой экран, делающий соединение невозможным. Это правильно?
Если да: есть ли способ использовать безопасный известный порт, чтобы избежать брандмауэра или, возможно, более вежливое решение?
Если нет: что происходит?
Спасибо !!