Python gevent.socket.error() Examples
The following are 30
code examples of gevent.socket.error().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
gevent.socket
, or try the search function
.
Example #1
Source File: connection.py From steam with MIT License | 6 votes |
def connect(self, server_addr): self._new_socket() logger.debug("Attempting connection to %s", str(server_addr)) try: self._connect(server_addr) except socket.error: return False self.server_addr = server_addr self.recv_queue.queue.clear() self._reader = gevent.spawn(self._reader_loop) self._writer = gevent.spawn(self._writer_loop) logger.debug("Connected.") self.event_connected.set() return True
Example #2
Source File: rpc.py From iris with BSD 2-Clause "Simplified" License | 6 votes |
def handle_slave_send(socket, address, req): message = req['data'] message_id = message.get('message_id', '?') message['to_slave'] = True try: runtime = send_funcs['message_send_enqueue'](message) response = 'OK' access_logger.info('Message (ID %s) from master %s queued successfully', message_id, address) except Exception: response = 'FAIL' logger.exception('Queueing message (ID %s) from master %s failed.') access_logger.error('Failed queueing message (ID %s) from master %s: %s', message_id, address, runtime) metrics.incr('slave_message_send_fail_cnt') socket.sendall(msgpack.packb(response))
Example #3
Source File: pywsgi.py From PokemonGo-DesktopMap with MIT License | 6 votes |
def update_environ(self): """ Called before the first request is handled to fill in WSGI environment values. This includes getting the correct server name and port. """ address = self.address if isinstance(address, tuple): if 'SERVER_NAME' not in self.environ: try: name = socket.getfqdn(address[0]) except socket.error: name = str(address[0]) if PY3 and not isinstance(name, str): name = name.decode('ascii') self.environ['SERVER_NAME'] = name self.environ.setdefault('SERVER_PORT', str(address[1])) else: self.environ.setdefault('SERVER_NAME', '') self.environ.setdefault('SERVER_PORT', '')
Example #4
Source File: _sslgte279.py From PokemonGo-DesktopMap with MIT License | 6 votes |
def _real_connect(self, addr, connect_ex): if self.server_side: raise ValueError("can't connect in server-side mode") # Here we assume that the socket is client-side, and not # connected at the time of the call. We connect it, then wrap it. if self._connected: raise ValueError("attempt to connect already-connected SSLSocket!") self._sslobj = self.context._wrap_socket(self._sock, False, self.server_hostname, ssl_sock=self) try: if connect_ex: rc = socket.connect_ex(self, addr) else: rc = None socket.connect(self, addr) if not rc: self._connected = True if self.do_handshake_on_connect: self.do_handshake() return rc except socket_error: self._sslobj = None raise
Example #5
Source File: _sslgte279.py From PhonePi_SampleServer with MIT License | 6 votes |
def _real_connect(self, addr, connect_ex): if self.server_side: raise ValueError("can't connect in server-side mode") # Here we assume that the socket is client-side, and not # connected at the time of the call. We connect it, then wrap it. if self._connected: raise ValueError("attempt to connect already-connected SSLSocket!") self._sslobj = self._context._wrap_socket(self._sock, False, self.server_hostname, ssl_sock=self) try: if connect_ex: rc = socket.connect_ex(self, addr) else: rc = None socket.connect(self, addr) if not rc: self._connected = True if self.do_handshake_on_connect: self.do_handshake() return rc except socket_error: self._sslobj = None raise
Example #6
Source File: _ssl3.py From satori with Apache License 2.0 | 6 votes |
def _real_connect(self, addr, connect_ex): if self.server_side: raise ValueError("can't connect in server-side mode") # Here we assume that the socket is client-side, and not # connected at the time of the call. We connect it, then wrap it. if self._connected: raise ValueError("attempt to connect already-connected SSLSocket!") self._sslobj = self.context._wrap_socket(self._sock, False, self.server_hostname) try: if connect_ex: rc = socket.connect_ex(self, addr) else: rc = None socket.connect(self, addr) if not rc: if self.do_handshake_on_connect: self.do_handshake() self._connected = True return rc except socket_error: self._sslobj = None raise
Example #7
Source File: pywsgi.py From PhonePi_SampleServer with MIT License | 6 votes |
def update_environ(self): """ Called before the first request is handled to fill in WSGI environment values. This includes getting the correct server name and port. """ address = self.address if isinstance(address, tuple): if 'SERVER_NAME' not in self.environ: try: name = socket.getfqdn(address[0]) except socket.error: name = str(address[0]) if PY3 and not isinstance(name, str): name = name.decode('ascii') # python 2 pylint:disable=redefined-variable-type self.environ['SERVER_NAME'] = name self.environ.setdefault('SERVER_PORT', str(address[1])) else: self.environ.setdefault('SERVER_NAME', '') self.environ.setdefault('SERVER_PORT', '')
Example #8
Source File: _sslgte279.py From satori with Apache License 2.0 | 6 votes |
def _real_connect(self, addr, connect_ex): if self.server_side: raise ValueError("can't connect in server-side mode") # Here we assume that the socket is client-side, and not # connected at the time of the call. We connect it, then wrap it. if self._connected: raise ValueError("attempt to connect already-connected SSLSocket!") self._sslobj = self.context._wrap_socket(self._sock, False, self.server_hostname, ssl_sock=self) try: if connect_ex: rc = socket.connect_ex(self, addr) else: rc = None socket.connect(self, addr) if not rc: self._connected = True if self.do_handshake_on_connect: self.do_handshake() return rc except socket_error: self._sslobj = None raise
Example #9
Source File: _ssl3.py From PokemonGo-DesktopMap with MIT License | 6 votes |
def _real_connect(self, addr, connect_ex): if self.server_side: raise ValueError("can't connect in server-side mode") # Here we assume that the socket is client-side, and not # connected at the time of the call. We connect it, then wrap it. if self._connected: raise ValueError("attempt to connect already-connected SSLSocket!") self._sslobj = self.context._wrap_socket(self._sock, False, self.server_hostname) try: if connect_ex: rc = socket.connect_ex(self, addr) else: rc = None socket.connect(self, addr) if not rc: if self.do_handshake_on_connect: self.do_handshake() self._connected = True return rc except socket_error: self._sslobj = None raise
Example #10
Source File: channel.py From gsmtpd with MIT License | 6 votes |
def smtp_STARTTLS(self, arg): if arg: self.push('501 Syntax: STARTTLS') return self.push('220 Ready to start TLS') if self.data: self.push('500 Too late to changed') return try: self.conn = ssl.wrap_socket(self.conn, **self.server.ssl) self.state = self.COMMAND self.seen_greeting = 0 self.rcpttos = [] self.mailfrom = None self.tls = True except Exception as err: logger.error(err, exc_info=True) self.push('503 certificate is FAILED') self.close_when_done()
Example #11
Source File: rpc.py From iris with BSD 2-Clause "Simplified" License | 6 votes |
def send_message_to_slave(message, address): try: payload = generate_msgpack_message_payload(message) except TypeError: logger.exception('Failed encoding message %s as msgpack', message) metrics.incr('rpc_message_pass_fail_cnt') return False pretty_address = '%s:%s' % address message_id = message.get('message_id', '?') try: s = socket.create_connection(address) s.send(payload) sender_resp = msgpack_unpack_msg_from_socket(s) s.close() except socket.error: logging.exception('Failed connecting to %s to send message (ID %s)', pretty_address, message_id) metrics.incr('rpc_message_pass_fail_cnt') return False if sender_resp == 'OK': access_logger.info('Successfully passed message (ID %s) to %s for sending', message_id, pretty_address) metrics.incr('rpc_message_pass_success_cnt') return True else: logger.error('Failed sending message (ID %s) through %s: %s', message_id, pretty_address, sender_resp) metrics.incr('rpc_message_pass_fail_cnt') return False
Example #12
Source File: server.py From gsmtpd with MIT License | 6 votes |
def handle(self, sock, addr): logger.debug('Incomming connection %s:%s', *addr[:2]) if self.relay and not addr[0] in self.remoteaddr: logger.debug('Not in remoteaddr', *addr[:2]) return try: with Timeout(self.timeout, ConnectionTimeout): sc = SMTPChannel(self, sock, addr, self.data_size_limit) while not sc.closed: sc.handle_read() except ConnectionTimeout: logger.warn('%s:%s Timeouted', *addr[:2]) try: sc.smtp_TIMEOUT() except Exception as err: logger.debug(err) except Exception as err: logger.error(err) # API for "doing something useful with the message"
Example #13
Source File: stream.py From gnsq with BSD 3-Clause "New" or "Revised" License | 6 votes |
def upgrade_to_tls( self, keyfile=None, certfile=None, cert_reqs=CERT_NONE, ca_certs=None, ssl_version=PROTOCOL_TLSv1_2 ): self.ensure_connection() try: self.socket = SSLSocket( self.socket, keyfile=keyfile, certfile=certfile, cert_reqs=cert_reqs, ca_certs=ca_certs, ssl_version=ssl_version, ) except socket.error as error: six.raise_from(NSQSocketError(*error.args), error)
Example #14
Source File: _ssl3.py From PhonePi_SampleServer with MIT License | 6 votes |
def _real_connect(self, addr, connect_ex): if self.server_side: raise ValueError("can't connect in server-side mode") # Here we assume that the socket is client-side, and not # connected at the time of the call. We connect it, then wrap it. if self._connected: raise ValueError("attempt to connect already-connected SSLSocket!") self._sslobj = self._context._wrap_socket(self._sock, False, self.server_hostname) if self._session is not None: # 3.6 self._sslobj = SSLObject(self._sslobj, owner=self, session=self._session) try: if connect_ex: rc = socket.connect_ex(self, addr) else: rc = None socket.connect(self, addr) if not rc: if self.do_handshake_on_connect: self.do_handshake() self._connected = True return rc except socket_error: self._sslobj = None raise
Example #15
Source File: stream.py From gnsq with BSD 3-Clause "New" or "Revised" License | 6 votes |
def read(self, size): while len(self.buffer) < size: self.ensure_connection() try: packet = self.socket.recv(self.buffer_size) except socket.error as error: if error.errno in (EDEADLK, EAGAIN, EWOULDBLOCK): gevent.sleep() continue six.raise_from(NSQSocketError(*error.args), error) if not packet: self.close() self.buffer += packet data = self.buffer[:size] self.buffer = self.buffer[size:] return data
Example #16
Source File: _sslgte279.py From PokemonGo-DesktopMap with MIT License | 6 votes |
def _real_connect(self, addr, connect_ex): if self.server_side: raise ValueError("can't connect in server-side mode") # Here we assume that the socket is client-side, and not # connected at the time of the call. We connect it, then wrap it. if self._connected: raise ValueError("attempt to connect already-connected SSLSocket!") self._sslobj = self.context._wrap_socket(self._sock, False, self.server_hostname, ssl_sock=self) try: if connect_ex: rc = socket.connect_ex(self, addr) else: rc = None socket.connect(self, addr) if not rc: self._connected = True if self.do_handshake_on_connect: self.do_handshake() return rc except socket_error: self._sslobj = None raise
Example #17
Source File: _ssl3.py From PokemonGo-DesktopMap with MIT License | 6 votes |
def _real_connect(self, addr, connect_ex): if self.server_side: raise ValueError("can't connect in server-side mode") # Here we assume that the socket is client-side, and not # connected at the time of the call. We connect it, then wrap it. if self._connected: raise ValueError("attempt to connect already-connected SSLSocket!") self._sslobj = self.context._wrap_socket(self._sock, False, self.server_hostname) try: if connect_ex: rc = socket.connect_ex(self, addr) else: rc = None socket.connect(self, addr) if not rc: if self.do_handshake_on_connect: self.do_handshake() self._connected = True return rc except socket_error: self._sslobj = None raise
Example #18
Source File: crispin.py From sync-engine with GNU Affero General Public License v3.0 | 5 votes |
def select_folder(self, folder, uidvalidity_cb): """ Selects a given folder. Makes sure to set the 'selected_folder' attribute to a (folder_name, select_info) pair. Selecting a folder indicates the start of an IMAP session. IMAP UIDs are only guaranteed valid for sessions, so the caller must provide a callback that checks UID validity. Starts a new session even if `folder` is already selected, since this does things like e.g. makes sure we're not getting cached/out-of-date values for HIGHESTMODSEQ from the IMAP server. """ try: select_info = self.conn.select_folder( folder, readonly=self.readonly) except imapclient.IMAPClient.Error as e: # Specifically point out folders that come back as missing by # checking for Yahoo / Gmail / Outlook (Hotmail) specific errors: if '[NONEXISTENT] Unknown Mailbox:' in e.message or \ 'does not exist' in e.message or \ "doesn't exist" in e.message: raise FolderMissingError(folder) # We can't assume that all errors here are caused by the folder # being deleted, as other connection errors could occur - but we # want to make sure we keep track of different providers' # "nonexistent" messages, so log this event. log.error("IMAPClient error selecting folder. May be deleted", error=str(e)) raise select_info['UIDVALIDITY'] = long(select_info['UIDVALIDITY']) self.selected_folder = (folder, select_info) # Don't propagate cached information from previous session self._folder_names = None return uidvalidity_cb(self.account_id, folder, select_info)
Example #19
Source File: crispin.py From sync-engine with GNU Affero General Public License v3.0 | 5 votes |
def all_uids(self): """ Fetch all UIDs associated with the currently selected folder. Returns ------- list UIDs as integers sorted in ascending order. """ # Note that this list may include items which have been marked for # deletion with the \Deleted flag, but not yet actually removed via # an EXPUNGE command. I choose to include them here since most clients # will still display them (sometimes with a strikethrough). If showing # these is a problem, we can either switch back to searching for # 'UNDELETED' or doing a fetch for ['UID', 'FLAGS'] and filtering. try: t = time.time() fetch_result = self.conn.search(['ALL']) except imaplib.IMAP4.error as e: if e.message.find('UID SEARCH wrong arguments passed') >= 0: # Mail2World servers fail for the otherwise valid command # 'UID SEARCH ALL' but strangely pass for 'UID SEARCH ALL UID' log.debug("Getting UIDs failed when using 'UID SEARCH " "ALL'. Switching to alternative 'UID SEARCH " "ALL UID", exception=e) t = time.time() fetch_result = self.conn.search(['ALL', 'UID']) else: raise elapsed = time.time() - t log.debug('Requested all UIDs', search_time=elapsed, total_uids=len(fetch_result)) return sorted([long(uid) for uid in fetch_result])
Example #20
Source File: crispin.py From sync-engine with GNU Affero General Public License v3.0 | 5 votes |
def get(self): """ Get a connection from the pool, or instantiate a new one if needed. If `num_connections` connections are already in use, block until one is available. """ # A gevent semaphore is granted in the order that greenlets tried to # acquire it, so we use a semaphore here to prevent potential # starvation of greenlets if there is high contention for the pool. # The queue implementation does not have that property; having # greenlets simply block on self._queue.get(block=True) could cause # individual greenlets to block for arbitrarily long. self._sem.acquire() client = self._queue.get() try: if client is None: client = self._new_connection() yield client if not self._should_timeout_connection(): self._logout(client) client = None except CONN_DISCARD_EXC_CLASSES as exc: # Discard the connection on socket or IMAP errors. Technically this # isn't always necessary, since if you got e.g. a FETCH failure you # could reuse the same connection. But for now it's the simplest # thing to do. log.info('IMAP connection error; discarding connection', exc_info=True) if client is not None and \ not isinstance(exc, CONN_UNUSABLE_EXC_CLASSES): self._logout(client) client = None raise exc except: raise finally: self._queue.put(client) self._sem.release()
Example #21
Source File: crispin.py From sync-engine with GNU Affero General Public License v3.0 | 5 votes |
def _exc_callback(exc): log.info('Connection broken with error; retrying with new connection', exc_info=True) gevent.sleep(5)
Example #22
Source File: test_concurrency.py From sync-engine with GNU Affero General Public License v3.0 | 5 votes |
def error(self, *args, **kwargs): self.call_count += 1
Example #23
Source File: produce_and_consume.py From Barrage with MIT License | 5 votes |
def produce_danmaku(sock, danmaku_queue, is_health=True): """Produce danmakus. :param sock: the socket object. :param danmaku_queue: the queue to recieve danmaku. :param is_health: the status of connection """ start = time.time() while True: end = time.time() if end - start > HEARTBEAT_KEEP_TIME: start = time.time() heartbeat.switch(sock, danmaku_queue, is_health) try: data = sock.recv(10240) if not data: break except socket.timeout: if not is_health: print "连接超时,准备重连服务器。。。" break except socket.error: break status = process_recieve_data(danmaku_queue, data) if status: consume_danmaku.switch(sock, danmaku_queue, is_health)
Example #24
Source File: gevent_chat_server.py From Software-Architecture-with-Python with MIT License | 5 votes |
def new_chat_channel(conn, address): """ New chat channel for a given connection """ participants.add(conn) data = conn.recv(1024) user = '' while data: print("Chat:", data.strip()) for p in participants: try: if p is not conn: data = data.decode('utf-8') user, msg = data.split(':') if msg != '<handshake>': data_s = '\n#[' + user + ']>>> says ' + msg else: data_s = '(User %s connected)\n' % user p.send(bytearray(data_s, 'utf-8')) except socket.error as e: # ignore broken pipes, they just mean the participant # closed its connection already if e[0] != 32: raise data = conn.recv(1024) participants.remove(conn) print("Participant %s left chat." % user)
Example #25
Source File: _ssl2.py From PhonePi_SampleServer with MIT License | 5 votes |
def accept(self): """Accepts a new connection from a remote client, and returns a tuple containing that new connection wrapped with a server-side SSL channel, and the address of the remote client.""" sock = self._sock while True: try: client_socket, address = sock.accept() break except socket_error as ex: if ex.args[0] != EWOULDBLOCK or self.timeout == 0.0: raise sys.exc_clear() self._wait(self._read_event) sslobj = SSLSocket(client_socket, keyfile=self.keyfile, certfile=self.certfile, server_side=True, cert_reqs=self.cert_reqs, ssl_version=self.ssl_version, ca_certs=self.ca_certs, do_handshake_on_connect=self.do_handshake_on_connect, suppress_ragged_eofs=self.suppress_ragged_eofs, ciphers=self.ciphers) return sslobj, address
Example #26
Source File: pywsgi.py From PhonePi_SampleServer with MIT License | 5 votes |
def _send_error_response_if_possible(self, error_code): if self.response_length: self.close_connection = True else: status, headers, body = _ERRORS[error_code] try: self.start_response(status, headers[:]) self.write(body) except socket.error: if not PY3: sys.exc_clear() self.close_connection = True
Example #27
Source File: pywsgi.py From PhonePi_SampleServer with MIT License | 5 votes |
def handle_one_response(self): self.time_start = time.time() self.status = None self.headers_sent = False self.result = None self.response_use_chunked = False self.response_length = 0 try: try: self.run_application() finally: try: self.wsgi_input._discard() except (socket.error, IOError): # Don't let exceptions during discarding # input override any exception that may have been # raised by the application, such as our own _InvalidClientInput. # In the general case, these aren't even worth logging (see the comment # just below) pass except _InvalidClientInput: self._send_error_response_if_possible(400) except socket.error as ex: if ex.args[0] in (errno.EPIPE, errno.ECONNRESET): # Broken pipe, connection reset by peer. # Swallow these silently to avoid spewing # useless info on normal operating conditions, # bloating logfiles. See https://github.com/gevent/gevent/pull/377 # and https://github.com/gevent/gevent/issues/136. if not PY3: sys.exc_clear() self.close_connection = True else: self.handle_error(*sys.exc_info()) except: # pylint:disable=bare-except self.handle_error(*sys.exc_info()) finally: self.time_finish = time.time() self.log_request()
Example #28
Source File: pywsgi.py From PhonePi_SampleServer with MIT License | 5 votes |
def _sendall(self, data): try: self.socket.sendall(data) except socket.error as ex: self.status = 'socket error: %s' % ex if self.code > 0: self.code = -self.code raise self.response_length += len(data)
Example #29
Source File: socket_process.py From Barrage with MIT License | 5 votes |
def generate_socket(room_id): """Generate the socket to communicate with Bilibili Danmaku Server. :param room_id: the id of live room. """ global is_first retry_time = 0 socket.setdefaulttimeout(TIME_OUT) userid = int(100000000 * random.random()) body = ('{"roomid": ' + str(room_id) + ', "uid": ' + str(userid) +'}') while True: try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) address = get_server(room_id) sock.connect( (address, 788)) send_data = send_socket_data(sock, 16 + len(body), 16, 1, 7, 1, body) except socket.error as exc: if retry_time == MAX_RETRY: if not is_first: terminate() raise RuntimeError("重试请求过多,服务中止!") print "服务器连接失败..." retry_time += 1 time.sleep(4) continue if is_first: print "开始接收弹幕。(Ctrl + C 退出)" is_first = False retry_time = 0 try: yield sock finally: sock.close()
Example #30
Source File: ResultManager.py From Panda-Sandbox with MIT License | 5 votes |
def __init__(self): ip = config("cuckoo:resultserver:ip") port = config("cuckoo:resultserver:port") pool_size = config("cuckoo:resultserver:pool_size") sock = gevent.socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) try: sock.bind((ip, port)) except (OSError, socket.error) as e: if e.errno == errno.EADDRINUSE: raise CuckooCriticalError( "Cannot bind ResultServer on port %d " "because it was in use, bailing." % port ) elif e.errno == errno.EADDRNOTAVAIL: raise CuckooCriticalError( "Unable to bind ResultServer on %s:%s %s. This " "usually happens when you start Cuckoo without " "bringing up the virtual interface associated with " "the ResultServer IP address. Please refer to " "https://cuckoo.sh/docs/faq/#troubles-problem " "for more information." % (ip, port, e) ) else: raise CuckooCriticalError( "Unable to bind ResultServer on %s:%s: %s" % (ip, port, e) ) # We allow user to specify port 0 to get a random port, report it back # here _, self.port = sock.getsockname() sock.listen(128) self.thread = threading.Thread( target=self.create_server, args=(sock, pool_size) ) self.thread.daemon = True self.thread.start()