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.
		
		
		
		
			
				
					46 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					46 lines
				
				1.3 KiB
			| 
								 
											8 years ago
										 
									 | 
							
								# -*- 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
							 |