def _read_loop(self, resp): logger.debug("_read_loop init") # retry limit for http connecting http_count = 0 while self.running: if resp.isclosed(): break logger.debug("_readloop start(%s)" % str(resp.status)) # read length data = '' while True: try: c = resp.read(1) if c == '\n': http_count = 0 break data += c except SSLError, exception: logger.info("(%s retry:%d):%s" % ("_read_loop", http_count, str(exception))) http_count += 1 if http_count > self.http_retry: logger.error("over retry max") raise NoResponse("break loop") data = data.strip() # read data and pass into listener if self.listener.on_data(data) is False: self.running = False
def dispatch(self, status): for k, q in self.queue_list.items(): try: q.put(status, block=True, timeout=None) logger.debug("put %s" % str(k)) except Exception, err: logger.debug("%s" % err) continue
def worker(self): while True: try: logger.debug("wait..") status = self.evqueue.get(block=True, timeout=None) logger.debug("get by %s" % (status.author.screen_name,)) self.dispatch(status) except TwisterError, err: logger.error(err) except Exception, err: logger.error(err)
def worker(self): while True: try: logger.debug("wait..") status = self.evqueue.get(block=True, timeout=None) logger.debug("get by %s" % (status.author.screen_name, )) self.dispatch(status) except TwisterError, err: logger.error(err) except Exception, err: logger.error(err)
def handle(self): logger.debug("connect by %s" % str(self.client_address)) self.queue_list[self.client_address] = Queue.Queue() while True: try: status = self.queue_list[self.client_address].get(block=True, timeout=None) self.request.send(to_utf8(status.text)) except Exception, err: # エラー発生で切断 logger.error(err) # can do on finish? del self.queue_list[self.client_address] break
def add_user(self, name, user): try: if not (isinstance(user, list) or isinstance(user, tuple)): if not isinstance(user, dict): user = [user] else: raise TypeError("'user' should specify str or list or tuple.") self.events[self.get_event_index(name)] += list(user) except NotFoundEvent: raise except TypeError: raise except: raise TwisterError("(Fatal Error) ev_remove.") else: logger.debug("Remove event '%s'" % self.events[name])
def add_user(self, name, user): try: if not (isinstance(user, list) or isinstance(user, tuple)): if not isinstance(user, dict): user = [user] else: raise TypeError( "'user' should specify str or list or tuple.") self.events[self.get_event_index(name)] += list(user) except NotFoundEvent: raise except TypeError: raise except: raise TwisterError("(Fatal Error) ev_remove.") else: logger.debug("Remove event '%s'" % self.events[name])
def _run(self): # Authenticate url = "%s://%s%s" % (self.scheme, self.host, self.url) # Connect and process the stream error_counter = 0 conn = None exception = None logger.debug(u"run streaming server.") while self.running: # quit if error count greater than retry count if self.retry_count is not None and error_counter > self.retry_count: break try: if self.scheme == "http": conn = httplib.HTTPConnection(self.host) else: conn = httplib.HTTPSConnection(self.host) self.auth.apply_auth(url, 'POST', self.headers, self.parameters) conn.connect() conn.sock.settimeout(self.timeout) conn.request('POST', self.url, self.body, headers=self.headers) logger.debug(u"wait response.") resp = conn.getresponse() logger.debug(u"connect response: %s" % str(resp)) if resp.status != 200: if self.listener.on_error(resp.status) is False: break error_counter += 1 logger.error("response status: error(%s)", (str(resp.status), )) sleep(self.retry_time) else: error_counter = 0 logger.info("response status: ok(%s)", (str(resp.status), )) self._read_loop(resp) except socket.error, err: self.listener.on_socket_error(err) except socket.gaierror, err: self.listener.on_socket_error(err)
def _run(self): # Authenticate url = "%s://%s%s" % (self.scheme, self.host, self.url) # Connect and process the stream error_counter = 0 conn = None exception = None logger.debug(u"run streaming server.") while self.running: # quit if error count greater than retry count if self.retry_count is not None and error_counter > self.retry_count: break try: if self.scheme == "http": conn = httplib.HTTPConnection(self.host) else: conn = httplib.HTTPSConnection(self.host) self.auth.apply_auth(url, 'POST', self.headers, self.parameters) conn.connect() conn.sock.settimeout(self.timeout) conn.request('POST', self.url, self.body, headers=self.headers) logger.debug(u"wait response.") resp = conn.getresponse() logger.debug(u"connect response: %s" % str(resp)) if resp.status != 200: if self.listener.on_error(resp.status) is False: break error_counter += 1 logger.error("response status: error(%s)", (str(resp.status),)) sleep(self.retry_time) else: error_counter = 0 logger.info("response status: ok(%s)", (str(resp.status),)) self._read_loop(resp) except socket.error, err: self.listener.on_socket_error(err) except socket.gaierror, err: self.listener.on_socket_error(err)
def call(self, status): logger.debug("callback") logger.debug(status.text) self.dispatch(status)
def call(self, status): if self.is_processed(status): logger.debug("put %s" % (status.text,)) self.evqueue.put(status, block=True, timeout=None)
def start_server(self): logger.debug("start server.") self.server.serve_forever()
def on_limit(self, track): """Called when a limitation notice arrvies""" logger.debug("[limit]") return
def call(self, status): if self.is_processed(status): logger.debug("put %s" % (status.text, )) self.evqueue.put(status, block=True, timeout=None)