You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							45 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							45 lines
						
					
					
						
							1.3 KiB
						
					
					
				# -*- coding: utf-8 -
 | 
						|
#
 | 
						|
# This file is part of gunicorn released under the MIT license.
 | 
						|
# See the NOTICE for more information.
 | 
						|
 | 
						|
import os
 | 
						|
 | 
						|
SD_LISTEN_FDS_START = 3
 | 
						|
 | 
						|
 | 
						|
def listen_fds(unset_environment=True):
 | 
						|
    """
 | 
						|
    Get the number of sockets inherited from systemd socket activation.
 | 
						|
 | 
						|
    :param unset_environment: clear systemd environment variables unless False
 | 
						|
    :type unset_environment: bool
 | 
						|
    :return: the number of sockets to inherit from systemd socket activation
 | 
						|
    :rtype: int
 | 
						|
 | 
						|
    Returns zero immediately if $LISTEN_PID is not set to the current pid.
 | 
						|
    Otherwise, returns the number of systemd activation sockets specified by
 | 
						|
    $LISTEN_FDS.
 | 
						|
 | 
						|
    When $LISTEN_PID matches the current pid, unsets the environment variables
 | 
						|
    unless the ``unset_environment`` flag is ``False``.
 | 
						|
 | 
						|
    .. note::
 | 
						|
        Unlike the sd_listen_fds C function, this implementation does not set
 | 
						|
        the FD_CLOEXEC flag because the gunicorn arbiter never needs to do this.
 | 
						|
 | 
						|
    .. seealso::
 | 
						|
        `<https://www.freedesktop.org/software/systemd/man/sd_listen_fds.html>`_
 | 
						|
 | 
						|
    """
 | 
						|
    fds = int(os.environ.get('LISTEN_FDS', 0))
 | 
						|
    listen_pid = int(os.environ.get('LISTEN_PID', 0))
 | 
						|
 | 
						|
    if listen_pid != os.getpid():
 | 
						|
        return 0
 | 
						|
 | 
						|
    if unset_environment:
 | 
						|
        os.environ.pop('LISTEN_PID', None)
 | 
						|
        os.environ.pop('LISTEN_FDS', None)
 | 
						|
 | 
						|
    return fds
 | 
						|
 |