Python socket.SO_KEEPALIVE Examples
The following are 30
code examples of socket.SO_KEEPALIVE().
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
socket
, or try the search function
.
Example #1
Source File: stream.py From NoobSec-Toolkit with GNU General Public License v2.0 | 8 votes |
def _connect(cls, host, port, family = socket.AF_INET, socktype = socket.SOCK_STREAM, proto = 0, timeout = 3, nodelay = False, keepalive = False): family, socktype, proto, _, sockaddr = socket.getaddrinfo(host, port, family, socktype, proto)[0] s = socket.socket(family, socktype, proto) s.settimeout(timeout) s.connect(sockaddr) if nodelay: s.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) if keepalive: s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) # Linux specific: after 10 idle minutes, start sending keepalives every 5 minutes. # Drop connection after 10 failed keepalives if hasattr(socket, "TCP_KEEPIDLE") and hasattr(socket, "TCP_KEEPINTVL") and hasattr(socket, "TCP_KEEPCNT"): s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 10 * 60) s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 5 * 60) s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 10) return s
Example #2
Source File: interface.py From Uwallet with MIT License | 6 votes |
def get_simple_socket(self): try: l = socket.getaddrinfo(self.host, self.port, socket.AF_UNSPEC, socket.SOCK_STREAM) except socket.gaierror: log.error("cannot resolve hostname") return for res in l: try: s = socket.socket(res[0], socket.SOCK_STREAM) s.connect(res[4]) s.settimeout(2) s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) return s except BaseException as e: log.exception('Failed to connect to %s', res) continue
Example #3
Source File: eventlet_service.py From oslo.service with Apache License 2.0 | 6 votes |
def start(self, key=None, backlog=128): """Run a WSGI server with the given application.""" if self.socket is None: self.listen(key=key, backlog=backlog) dup_socket = self.socket.dup() if key: self.socket_info[key] = self.socket.getsockname() # Optionally enable keepalive on the wsgi socket. if self.keepalive: dup_socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) if self.keepidle is not None: dup_socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, self.keepidle) self.greenthread = self.pool.spawn(self._run, self.application, dup_socket)
Example #4
Source File: test_wsgi.py From oslo.service with Apache License 2.0 | 6 votes |
def test_socket_options_for_ssl_server(self): # test normal socket options has set properly self.config(tcp_keepidle=500) server = wsgi.Server(self.conf, "test_socket_options", None, host="127.0.0.1", port=0, use_ssl=True) server.start() sock = server.socket self.assertEqual(1, sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR)) self.assertEqual(1, sock.getsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE)) if hasattr(socket, 'TCP_KEEPIDLE'): self.assertEqual(CONF.tcp_keepidle, sock.getsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE)) server.stop() server.wait()
Example #5
Source File: filebeat.py From filebeat.py with MIT License | 6 votes |
def get_socket(address): """ 根据配置信息建立tcp连接 Args: address: host:name字符串 Returns: 建立成功返回socket对象, 失败返回False """ (ip, port) = address.split(':') s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) # 在客户端开启心跳维护 try: s.connect((ip, int(port))) except socket.error: return False else: return s
Example #6
Source File: test_wsgi.py From oslo.service with Apache License 2.0 | 6 votes |
def test_socket_options_for_simple_server(self): # test normal socket options has set properly self.config(tcp_keepidle=500) server = wsgi.Server(self.conf, "test_socket_options", None, host="127.0.0.1", port=0) server.start() sock = server.socket self.assertEqual(1, sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR)) self.assertEqual(1, sock.getsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE)) if hasattr(socket, 'TCP_KEEPIDLE'): self.assertEqual(self.conf.tcp_keepidle, sock.getsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE)) self.assertFalse(server._server.dead) server.stop() server.wait() self.assertTrue(server._server.dead)
Example #7
Source File: socket_options.py From Requester with MIT License | 6 votes |
def __init__(self, **kwargs): socket_options = kwargs.pop('socket_options', SocketOptionsAdapter.default_options) idle = kwargs.pop('idle', 60) interval = kwargs.pop('interval', 20) count = kwargs.pop('count', 5) socket_options = socket_options + [ (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1), (socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, interval), (socket.IPPROTO_TCP, socket.TCP_KEEPCNT, count), ] # NOTE(Ian): Apparently OSX does not have this constant defined, so we # set it conditionally. if getattr(socket, 'TCP_KEEPIDLE', None) is not None: socket_options += [(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, idle)] super(TCPKeepAliveAdapter, self).__init__( socket_options=socket_options, **kwargs )
Example #8
Source File: test_wsgi.py From masakari with Apache License 2.0 | 6 votes |
def test_socket_options_for_simple_server(self): # test normal socket options has set properly self.flags(tcp_keepidle=500, group='wsgi') server = masakari.wsgi.Server("test_socket_options", None, host="127.0.0.1", port=0) server.start() sock = server._socket self.assertEqual(1, sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR)) self.assertEqual(1, sock.getsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE)) if hasattr(socket, 'TCP_KEEPIDLE'): self.assertEqual(CONF.wsgi.tcp_keepidle, sock.getsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE)) server.stop() server.wait()
Example #9
Source File: client.py From python-ogn-client with GNU Affero General Public License v3.0 | 6 votes |
def connect(self): # create socket, connect to server, login and make a file object associated with the socket self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) if self.aprs_filter: port = self.settings.APRS_SERVER_PORT_CLIENT_DEFINED_FILTERS else: port = self.settings.APRS_SERVER_PORT_FULL_FEED self.sock.connect((self.settings.APRS_SERVER_HOST, port)) self.logger.debug('Server port {}'.format(port)) login = create_aprs_login(self.aprs_user, -1, self.settings.APRS_APP_NAME, self.settings.APRS_APP_VER, self.aprs_filter) self.sock.send(login.encode()) self.sock_file = self.sock.makefile('rw') self._kill = False
Example #10
Source File: debugger_unittest.py From PyDev.Debugger with Eclipse Public License 1.0 | 6 votes |
def start_socket_client(self, host, port): self._sequence = -1 if SHOW_WRITES_AND_READS: print("Connecting to %s:%s" % (host, port)) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Set TCP keepalive on an open socket. # It activates after 1 second (TCP_KEEPIDLE,) of idleness, # then sends a keepalive ping once every 3 seconds (TCP_KEEPINTVL), # and closes the connection after 5 failed ping (TCP_KEEPCNT), or 15 seconds try: from socket import IPPROTO_TCP, SO_KEEPALIVE, TCP_KEEPIDLE, TCP_KEEPINTVL, TCP_KEEPCNT s.setsockopt(socket.SOL_SOCKET, SO_KEEPALIVE, 1) s.setsockopt(IPPROTO_TCP, TCP_KEEPIDLE, 1) s.setsockopt(IPPROTO_TCP, TCP_KEEPINTVL, 3) s.setsockopt(IPPROTO_TCP, TCP_KEEPCNT, 5) except ImportError: pass # May not be available everywhere. # 10 seconds default timeout timeout = int(os.environ.get('PYDEVD_CONNECT_TIMEOUT', 10)) s.settimeout(timeout) for _i in range(20): try: s.connect((host, port)) break except: time.sleep(.5) # We may have to wait a bit more and retry (especially on PyPy). s.settimeout(None) # no timeout after connected if SHOW_WRITES_AND_READS: print("Connected.") self._set_socket(s) return s
Example #11
Source File: asyncredis.py From collection with MIT License | 6 votes |
def connect(self, address, port, timeout = 0): self.close() af = socket.AF_INET if ':' in address: if not 'AF_INET6' in socket.__dict__: return -1 if not socket.has_ipv6: return -2 af = socket.AF_INET6 self.ipv6 = True self.sock = socket.socket(af, socket.SOCK_STREAM) to = self.sock.gettimeout() self.sock.setblocking(0) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) self.state = NET_STATE_CONNECTING try: hr = self.sock.connect_ex((address, port)) except socket.error, e: pass
Example #12
Source File: http_client.py From hivemind with MIT License | 6 votes |
def __init__(self, nodes, **kwargs): if kwargs.get('tcp_keepalive', True): socket_options = HTTPConnection.default_socket_options + \ [(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1), ] else: socket_options = HTTPConnection.default_socket_options self.http = urllib3.poolmanager.PoolManager( num_pools=kwargs.get('num_pools', 10), maxsize=kwargs.get('maxsize', 64), timeout=kwargs.get('timeout', 30), socket_options=socket_options, block=False, retries=Retry(total=False), headers={ 'Content-Type': 'application/json', 'accept-encoding': 'gzip'}, cert_reqs='CERT_REQUIRED', ca_certs=certifi.where()) self.nodes = cycle(nodes) self.url = '' self.request = None self.next_node()
Example #13
Source File: test_connection.py From aredis with MIT License | 6 votes |
def test_connect_tcp_keepalive_options(event_loop): conn = Connection( loop=event_loop, socket_keepalive=True, socket_keepalive_options={ socket.TCP_KEEPIDLE: 1, socket.TCP_KEEPINTVL: 1, socket.TCP_KEEPCNT: 3, }, ) await conn._connect() sock = conn._writer.transport.get_extra_info('socket') assert sock.getsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE) == 1 for k, v in ( (socket.TCP_KEEPIDLE, 1), (socket.TCP_KEEPINTVL, 1), (socket.TCP_KEEPCNT, 3), ): assert sock.getsockopt(socket.SOL_TCP, k) == v conn.disconnect()
Example #14
Source File: stream.py From NoobSec-Toolkit with GNU General Public License v2.0 | 6 votes |
def _connect(cls, host, port, family = socket.AF_INET, socktype = socket.SOCK_STREAM, proto = 0, timeout = 3, nodelay = False, keepalive = False): family, socktype, proto, _, sockaddr = socket.getaddrinfo(host, port, family, socktype, proto)[0] s = socket.socket(family, socktype, proto) s.settimeout(timeout) s.connect(sockaddr) if nodelay: s.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) if keepalive: s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) # Linux specific: after 10 idle minutes, start sending keepalives every 5 minutes. # Drop connection after 10 failed keepalives if hasattr(socket, "TCP_KEEPIDLE") and hasattr(socket, "TCP_KEEPINTVL") and hasattr(socket, "TCP_KEEPCNT"): s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 10 * 60) s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 5 * 60) s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 10) return s
Example #15
Source File: tcp.py From learn_python3_spider with MIT License | 5 votes |
def setTcpKeepAlive(self, enabled): self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, enabled)
Example #16
Source File: client.py From python-sonic-client with MIT License | 5 votes |
def __create_connection(self, address): "Create a TCP socket connection" # we want to mimic what socket.create_connection does to support # ipv4/ipv6, but we want to set options prior to calling # socket.connect() # snippet taken from redis client code. err = None for res in socket.getaddrinfo(self.host, self.port, 0, socket.SOCK_STREAM): family, socktype, proto, canonname, socket_address = res sock = None try: sock = socket.socket(family, socktype, proto) # TCP_NODELAY sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) # TCP_KEEPALIVE if self.keepalive: sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) # set the socket_connect_timeout before we connect if self.socket_connect_timeout: sock.settimeout(self.timeout) # connect sock.connect(socket_address) # set the socket_timeout now that we're connected if self.timeout: sock.settimeout(self.timeout) return sock except socket.error as _: err = _ if sock is not None: sock.close() if err is not None: raise err raise socket.error("socket.getaddrinfo returned an empty list")
Example #17
Source File: args.py From bash-lambda-layer with MIT License | 5 votes |
def _compute_socket_options(self, scoped_config): # This disables Nagle's algorithm and is the default socket options # in urllib3. socket_options = [(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)] if scoped_config: # Enables TCP Keepalive if specified in shared config file. if self._ensure_boolean(scoped_config.get('tcp_keepalive', False)): socket_options.append( (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)) return socket_options
Example #18
Source File: redshift_psql.py From mycroft with MIT License | 5 votes |
def get_connection(self, database): """ gets a connection to the a psql database Args: self.password -- the password to the database Returns: a connection object """ # additional logging to help with connection issues boto_config_dict = self.get_boto_config() self.log_stream.write_msg('boto', extra_msg=boto_config_dict) log_template = "getting connection with host {0} port {1} user {2} db {3}" log_msg = log_template.format(self.host, self.port, self.user, database) self.log_stream.write_msg('starting', extra_msg=log_msg) conn = psycopg2.connect( host=self.host, port=self.port, user=self.user, password=self.password, database=database, sslmode='require') self.log_stream.write_msg('finished', extra_msg=log_msg) fd = conn.fileno() sock = socket.fromfd(fd, socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, self.SECONDS_BEFORE_SENDING_PROBE) sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, self.SECONDS_BETWEEN_SENDING_PROBE) sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, self.RETRIES_BEFORE_QUIT) return conn
Example #19
Source File: connection.py From scalyr-agent-2 with Apache License 2.0 | 5 votes |
def _connect(self): "Create a TCP socket connection" # we want to mimic what socket.create_connection does to support # ipv4/ipv6, but we want to set options prior to calling # socket.connect() err = None for res in socket.getaddrinfo(self.host, self.port, 0, socket.SOCK_STREAM): family, socktype, proto, canonname, socket_address = res sock = None try: sock = socket.socket(family, socktype, proto) # TCP_NODELAY sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) # TCP_KEEPALIVE if self.socket_keepalive: sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) for k, v in iteritems(self.socket_keepalive_options): sock.setsockopt(socket.SOL_TCP, k, v) # set the socket_connect_timeout before we connect sock.settimeout(self.socket_connect_timeout) # connect sock.connect(socket_address) # set the socket_timeout now that we're connected sock.settimeout(self.socket_timeout) return sock except socket.error as _: err = _ if sock is not None: sock.close() if err is not None: raise err raise socket.error("socket.getaddrinfo returned an empty list")
Example #20
Source File: bot.py From Python3-Botnet with GNU General Public License v3.0 | 5 votes |
def main(): try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1) s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) #s.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE, 10) #s.setsockopt(socket.SOL_TCP, socket.TCP_KEEPINTVL, 10) s.setsockopt(socket.SOL_TCP, socket.TCP_KEEPCNT, 3)#this only can use on python3 env, python2 pls off this s.connect((cnc,cport)) cmdHandle(s) except Exception as e: connect()#magic loop
Example #21
Source File: connection.py From pynats with MIT License | 5 votes |
def _build_socket(self): self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self._socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) if self._socket_keepalive: self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) self._socket.settimeout(self._connect_timeout)
Example #22
Source File: sockets.py From IDArling with GNU General Public License v3.0 | 5 votes |
def set_keep_alive(self, cnt, intvl, idle): """ Set the TCP keep-alive of the underlying socket. It activates after idle seconds of idleness, sends a keep-alive ping once every intvl seconds, and disconnects after `cnt`failed pings. """ # Taken from https://github.com/markokr/skytools/ tcp_keepcnt = getattr(socket, "TCP_KEEPCNT", None) tcp_keepintvl = getattr(socket, "TCP_KEEPINTVL", None) tcp_keepidle = getattr(socket, "TCP_KEEPIDLE", None) tcp_keepalive = getattr(socket, "TCP_KEEPALIVE", None) sio_keeplive_vals = getattr(socket, "SIO_KEEPALIVE_VALS", None) if ( tcp_keepidle is None and tcp_keepalive is None and sys.platform == "darwin" ): tcp_keepalive = 0x10 self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) if tcp_keepcnt is not None: self._socket.setsockopt(socket.IPPROTO_TCP, tcp_keepcnt, cnt) if tcp_keepintvl is not None: self._socket.setsockopt(socket.IPPROTO_TCP, tcp_keepintvl, intvl) if tcp_keepidle is not None: self._socket.setsockopt(socket.IPPROTO_TCP, tcp_keepidle, idle) elif tcp_keepalive is not None: self._socket.setsockopt(socket.IPPROTO_TCP, tcp_keepalive, idle) elif sio_keeplive_vals is not None: self._socket.ioctl( sio_keeplive_vals, (1, idle * 1000, intvl * 1000) )
Example #23
Source File: tcp.py From learn_python3_spider with MIT License | 5 votes |
def getTcpKeepAlive(self): return operator.truth(self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE))
Example #24
Source File: tcp.py From learn_python3_spider with MIT License | 5 votes |
def setTcpKeepAlive(self, enabled): self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, enabled)
Example #25
Source File: tcp.py From learn_python3_spider with MIT License | 5 votes |
def getTcpKeepAlive(self): return operator.truth(self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE))
Example #26
Source File: connection.py From learn_python3_spider with MIT License | 5 votes |
def _connect(self): "Create a TCP socket connection" # we want to mimic what socket.create_connection does to support # ipv4/ipv6, but we want to set options prior to calling # socket.connect() err = None for res in socket.getaddrinfo(self.host, self.port, self.socket_type, socket.SOCK_STREAM): family, socktype, proto, canonname, socket_address = res sock = None try: sock = socket.socket(family, socktype, proto) # TCP_NODELAY sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) # TCP_KEEPALIVE if self.socket_keepalive: sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) for k, v in iteritems(self.socket_keepalive_options): sock.setsockopt(socket.IPPROTO_TCP, k, v) # set the socket_connect_timeout before we connect sock.settimeout(self.socket_connect_timeout) # connect sock.connect(socket_address) # set the socket_timeout now that we're connected sock.settimeout(self.socket_timeout) return sock except socket.error as _: err = _ if sock is not None: sock.close() if err is not None: raise err raise socket.error("socket.getaddrinfo returned an empty list")
Example #27
Source File: cnc.py From Python3-Botnet with GNU General Public License v3.0 | 5 votes |
def main(): global s s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1) s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)#Keepalive tcp connection s.bind(('0.0.0.0',b)) s.listen(1024) while True: sock, addr = s.accept() th = threading.Thread(target=waitConnect,args=(sock,addr)) th.start()
Example #28
Source File: connection.py From sofa-bolt-python with Apache License 2.0 | 5 votes |
def __init__(self, pool_key, blocking=False, **kwargs): self.validate_pool_key(pool_key) self.pool_key = pool_key sock = socket.socket(socket.AF_INET) sock.setblocking(blocking) sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) try: sock.connect((pool_key.host, pool_key.port)) except: pass self.sock = sock
Example #29
Source File: connection.py From revsync with MIT License | 5 votes |
def _connect(self): "Create a TCP socket connection" # we want to mimic what socket.create_connection does to support # ipv4/ipv6, but we want to set options prior to calling # socket.connect() err = None for res in socket.getaddrinfo(self.host, self.port, 0, socket.SOCK_STREAM): family, socktype, proto, canonname, socket_address = res sock = None try: sock = socket.socket(family, socktype, proto) # TCP_NODELAY sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) # TCP_KEEPALIVE if self.socket_keepalive: sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) for k, v in iteritems(self.socket_keepalive_options): sock.setsockopt(socket.SOL_TCP, k, v) # set the socket_connect_timeout before we connect sock.settimeout(self.socket_connect_timeout) # connect sock.connect(socket_address) # set the socket_timeout now that we're connected sock.settimeout(self.socket_timeout) return sock except socket.error as _: err = _ if sock is not None: sock.close() if err is not None: raise err raise socket.error("socket.getaddrinfo returned an empty list")
Example #30
Source File: server.py From PenguinDome with Apache License 2.0 | 5 votes |
def server_bind(self): self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) super(old_tcpserver, self).server_bind()