2014-11-17 3 views
0

То, что я вам сегодня этот журнал:витая ReconnectingClientFactory не может без ошибок

2014-11-17 08:26:35-0500 [-] Log opened. 
2014-11-17 08:26:35-0500 [-] twistd 14.0.2 (/usr/bin/python 2.7.8) starting up. 
2014-11-17 08:26:35-0500 [-] reactor class: twisted.internet.epollreactor.EPollReactor. 
2014-11-17 08:26:35-0500 [-] Starting factory <crawl_client.WhoisClientProtocolFactory instance at 0x7fc162a36440> 
2014-11-17 08:26:35-0500 [Uninitialized] <twisted.internet.tcp.Connector instance at 0x7fc168b7fe60> will retry in 2 seconds 
2014-11-17 08:26:35-0500 [Uninitialized] Stopping factory <crawl_client.WhoisClientProtocolFactory instance at 0x7fc162a36440> 
2014-11-17 08:26:37-0500 [-] Starting factory <crawl_client.WhoisClientProtocolFactory instance at 0x7fc162a36440> 
2014-11-17 08:26:37-0500 [Uninitialized] <twisted.internet.tcp.Connector instance at 0x7fc168b7fe60> will retry in 4 seconds 
2014-11-17 08:26:37-0500 [Uninitialized] Stopping factory <crawl_client.WhoisClientProtocolFactory instance at 0x7fc162a36440> 
2014-11-17 08:26:42-0500 [-] Starting factory <crawl_client.WhoisClientProtocolFactory instance at 0x7fc162a36440> 
2014-11-17 08:26:42-0500 [Uninitialized] <twisted.internet.tcp.Connector instance at 0x7fc168b7fe60> will retry in 14 seconds 
2014-11-17 08:26:42-0500 [Uninitialized] Stopping factory <crawl_client.WhoisClientProtocolFactory instance at 0x7fc162a36440> 
2014-11-17 08:26:57-0500 [-] Starting factory <crawl_client.WhoisClientProtocolFactory instance at 0x7fc162a36440> 

Вот завод код:

from twisted.internet.protocol import ReconnectingClientFactory 
from uuid import uuid4 

class WhoisClientProtocolFactory(ReconnectingClientFactory): 

    def __init__(self, clientName='', maxDelay=60): 
    # attach a name with the client to identify itself to the server 
    if not clientName: 
     clientName = str(uuid4())[:8] # first 8 characters from a random string 
    self.client_name = clientName 
    self.maxDelay = maxDelay 
    logFromClient("client started", logging.INFO, clientName) 

    def buildProtocol(self, addr): 
    self.resetDelay() 
    return MyClientProtocol(self.client_name) 

Этот код отлично на моей тестовой машине работает. При развертывании на сервере он перемещается по кругу. Как я могу раскрыть то, что вызывает это? Клиент основан на LineReceiver.

Благодаря

ответ

1

Когда попытка не удается установить соединение, clientConnectionFailed метод фабрики называется. ReconnectingClientFactory реализует этот метод, чтобы добавить поведение повтора и минимальное ведение журнала, которое вы видели, давая тайм-аут отсрочки.

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

Причина указана как пример Failure.

+0

Спасибо JPC !. Отказано в отказе. Я открыл порт из 'iptables', и теперь он работает. – MadeOfAir