← Back
Editing: profiler.cpython-311.pyc
� ��b# � � � d Z ddlZddlZddlZddlZddlmZ ddl m Z n# e$ r ddlm Z Y nw xY wej rddlmZ ddlmZ ddlmZ G d� d � � ZdS ) a9 Application Profiler ==================== This module provides a middleware that profiles each request with the :mod:`cProfile` module. This can help identify bottlenecks in your code that may be slowing down your application. .. autoclass:: ProfilerMiddleware :copyright: 2007 Pallets :license: BSD-3-Clause � N)�Stats)�Profile)� StartResponse)�WSGIApplication)�WSGIEnvironmentc �� � e Zd ZdZej ddddfdddej e d ej e d ej ej eeef dej e ded dfd�Zddddd ej e fd�ZdS )�ProfilerMiddlewarea Wrap a WSGI application and profile the execution of each request. Responses are buffered so that timings are more exact. If ``stream`` is given, :class:`pstats.Stats` are written to it after each request. If ``profile_dir`` is given, :mod:`cProfile` data files are saved to that directory, one file per request. The filename can be customized by passing ``filename_format``. If it is a string, it will be formatted using :meth:`str.format` with the following fields available: - ``{method}`` - The request method; GET, POST, etc. - ``{path}`` - The request path or 'root' should one not exist. - ``{elapsed}`` - The elapsed time of the request. - ``{time}`` - The time of the request. If it is a callable, it will be called with the WSGI ``environ`` dict and should return a filename. :param app: The WSGI application to wrap. :param stream: Write stats to this stream. Disable with ``None``. :param sort_by: A tuple of columns to sort stats by. See :meth:`pstats.Stats.sort_stats`. :param restrictions: A tuple of restrictions to filter stats by. See :meth:`pstats.Stats.print_stats`. :param profile_dir: Save profile data files to this directory. :param filename_format: Format string for profile data file names, or a callable returning a name. See explanation above. .. code-block:: python from werkzeug.middleware.profiler import ProfilerMiddleware app = ProfilerMiddleware(app) .. versionchanged:: 0.15 Stats are written even if ``profile_dir`` is given, and can be disable by passing ``stream=None``. .. versionadded:: 0.15 Added ``filename_format``. .. versionadded:: 0.9 Added ``restrictions`` and ``profile_dir``. )�time�calls� Nz/{method}.{path}.{elapsed:.0f}ms.{time:.0f}.prof�appr �stream�sort_by�restrictions�profile_dir�filename_format�returnc �Z � || _ || _ || _ || _ || _ || _ d S �N)�_app�_stream�_sort_by� _restrictions�_profile_dir�_filename_format)�selfr r r r r r s �>/usr/lib/python3/dist-packages/werkzeug/middleware/profiler.py�__init__zProfilerMiddleware.__init__M s7 � � �� ������ �)���'��� /����� �environr �start_responser c �� � ����� g �d��fd� �d���� fd�}t � � }t j � � }|� |� � d� �� � }t j � � |z }� j ��t � j � � r� � �� � }ng� j � �d �d � d� � � dd� � pd |d z t j � � �� � }t j � � j |� � }|� |� � � j ��t |� j �� � } | j � j � t# d � j �� � �� dd� � } t# d| ��� j �� � | j � j � t# d � d�� j �� � |gS )Nc �, �� �| ||� � �j S r )�append)�status�headers�exc_info� response_bodyr! s ��r �catching_start_responsez<ProfilerMiddleware.__call__.<locals>.catching_start_responseb s �� ��N�6�7�H�5�5�5� �'�'r r c �� �� �� �t j d�� � � � } �� | � � t | d� � r| � � � d S d S )Nr �close)r �t�cast�extend�hasattrr+ )�app_iterr) r r( r s ����r �runappz+ProfilerMiddleware.__call__.<locals>.runappf sp �� ��y�y�����1H�I�I�� �H� � � ��*�*�*��x��)�)� !���� � � � � � !� !r r �REQUEST_METHOD� PATH_INFO�/�.�rootg @�@)�method�path�elapsedr )r zP--------------------------------------------------------------------------------)�file� zPATH: � r )r N)r r �runcall�joinr �callabler �format�strip�replace�osr8 � dump_statsr r � sort_statsr �print�get�print_statsr ) r r r! r1 �profile�start�bodyr9 �filename�stats� path_infor) r( s ``` @@r �__call__zProfilerMiddleware.__call__] s ������ � (*� � (� (� (� (� (� (� (� !� !� !� !� !� !� !� !� !� �)�)��� ������������x�x� �&�&���)�+�+��%����(���-�.�.� ��0�0��9�9����0�7�7�"�#3�4� ��-�3�3�C�8�8�@�@��c�J�J�T�f�#�f�,����� 8� � �� �w�|�|�D�$5�x�@�@�H����x�(�(�(��<�#��'�$�,�7�7�7�E��E��d�m�,�,��(���.�.�.�.����K��4�4�I��(�9�(�(�t�|�<�<�<�<��E��t�1�2�2��X�/�/�/���5�5�5�5��v� r )�__name__� __module__�__qualname__�__doc__�sys�stdoutr, �IO�str�Iterable�Union�int�float�Optionalr �bytesrO r r r r r s� � � � � � �+� +�` �J�#4�=?�'+�P�0� 0� �0� ��S� �0� ��C�� 0� �j����c�5��!9�:�0� �Z��_� 0� �0� �0� 0� 0� 0� .�(�.�:I�.� ��E� �.� .� .� .� .� .r r )rS �os.pathrC rT r �typingr, �pstatsr �cProfiler �ImportErrorrI � TYPE_CHECKING�_typeshed.wsgir r r r r r r �<module>re s ��� � ���� � � � � ���� � � � � � � � � � � � � � � � � � ��� � � ��������� ���� �?� /�,�,�,�,�,�,�.�.�.�.�.�.�.�.�.�.�.�.�l� l� l� l� l� l� l� l� l� ls �! �/�/
Save File
Cancel