| Server IP : 54.37.205.81 / Your IP : 216.73.216.76 Web Server : nginx/1.22.1 System : Linux vps-249481fa 6.1.0-50-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.176-1 (2026-07-02) x86_64 User : debian ( 1000) PHP Version : 8.2.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /lib/python3/dist-packages/tornado/__pycache__/ |
Upload File : |
�
���i�& � � � d Z ddlZddlZddlZddlZddlZddlZddlZddl Z ddl
Zddlm
Z
ddlmZ ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZ ddlm Z m!Z! ddlm"Z" ddlm#Z# dd l$m%Z% dd
lm&Z& ddlm'Z' ddl(Zddlm)Z) dd
l*m+Z+m,Z,m-Z- ddl.Zddlm/Z/ ddl0m1Z1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; ddl<m=Z=m>Z>m?Z? e:Z@ddlAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZO ddlmPZP ddlAZAeAjQ rddlAmRZR eDeSe>eTejU ej f ZVeDeWeSeBeTeWf eBeTeSf f ZXdZY dZZ dZ[ dZ\ G d� d� � Z] e]� � Z^ ej_ d� � Z` G d� dea� � Zb eMdeb�� � ZcdeLec deLec fd �ZddeLeb deefd!�Zfd"eId#eEeFd f deId#eEeFd f fd$�Zgd"eId#eEeFd f deId#eEeFd f fd%�Zh G d&� d'e9� � Zi G d(� d)e7� � Zj G d*� d+e&jk � � Zl G d,� d-em� � Zn G d.� d/em� � Zo G d0� d1en� � Zp G d2� d3eb� � Zq G d4� d5eb� � Zr G d6� d7eb� � Zs G d8� d9eb� � Zt G d:� d;ea� � Zu G d<� d=eu� � Zvd"eId#eEeFd f deId#eEeFd f fd>�Zw G d?� d@ea� � Zx G dA� dBex� � Zy G dC� dDex� � Zz G dE� dFex� � Z{ G dG� dHea� � Z| d`dIeXdJeWdKeDeWeSf dLeEeT dMeEeIg e}f dNeEeT deSfdO�Z~ ej_ dP� � ZdKeSdeTfdQ�Z� dadIeXdJeWdKeDdeWeSf dSe}dMeEeIg e}f dTeEeT deEeS fdU�Z�dIeDeWeSf dJeWdKeSdSe}dMeIg e}f deEeS fdV�Z�dKeSdeGeTeSeSeSeSf fdW�Z�dIeXdJeWdKeSdSe}dMeIg e}f deEeS fdX�Z�dKeDeWeSf deEeT fdY�Z�dIeDeWeSf dZeDeWeSf deSfd[�Z�dIeDeWeSf d\eSdeSfd]�Z�d^eWdeefd_�Z�dS )baT ``tornado.web`` provides a simple web framework with asynchronous
features that allow it to scale to large numbers of open connections,
making it ideal for `long polling
<http://en.wikipedia.org/wiki/Push_technology#Long_polling>`_.
Here is a simple "Hello, world" example app:
.. testcode::
import asyncio
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
async def main():
application = tornado.web.Application([
(r"/", MainHandler),
])
application.listen(8888)
await asyncio.Event().wait()
if __name__ == "__main__":
asyncio.run(main())
.. testoutput::
:hide:
See the :doc:`guide` for additional information.
Thread-safety notes
-------------------
In general, methods on `RequestHandler` and elsewhere in Tornado are
not thread-safe. In particular, methods such as
`~RequestHandler.write()`, `~RequestHandler.finish()`, and
`~RequestHandler.flush()` must only be called from the main thread. If
you use multiple threads it is important to use `.IOLoop.add_callback`
to transfer control back to the main thread before finishing the
request, or to limit your use of other threads to
`.IOLoop.run_in_executor` and ensure that your callbacks running in
the executor do not refer to Tornado objects.
� N)�isclass)�BytesIO)� urlencode)�Future�"future_set_result_unless_cancelled)�escape)�gen)�
HTTPServer)�httputil)�iostream)�locale)�
access_log�app_log�gen_log)�template)�utf8�_unicode)�
AnyMatches�DefaultHostMatches�HostMatches�ReversibleRouter�Rule�ReversibleRuleRouter�URLSpec� _RuleList)�
ObjectDict�unicode_type�_websocket_mask)�Dict�Any�Union�Optional� Awaitable�Tuple�List�Callable�Iterable� Generator�Type�TypeVar�cast�overload)�
TracebackType)�Set� � c � � e Zd ZdS )�_ArgDefaultMarkerN)�__name__�
__module__�__qualname__� � �-/usr/lib/python3/dist-packages/tornado/web.pyr2 r2 � s � � � � � ��Dr7 r2 z"(?:[\t ]|[\x21-\x7E]|[\x80-\xFF])+c �x � � e Zd ZdZdZi Z ej � � Z e j
d� � ZdZdZ
dZdZdddej d ed
df� fd�Zd�d�ZeZ ed
eeef fd
�� � Zded ed
dfd�ZeZeZeZeZeZeZ eZ!d
e"e#d fd�Z$d�d�Z%d�d�Z&d�d�Z'd�d�Z(d�de)de"e d
dfd�Z*d
e)fd�Z+dede,d
dfd�Z-dede,d
dfd�Z.ded
dfd�Z/ e j
d� � Z0de,d
efd�Z1e2d�ded!ed"e3d
efd#�� � Z4e2e5d fded!e6d"e3d
efd$�� � Z4e2 d�ded!dd"e3d
e"e fd%�� � Z4e5d fded!e7dee6f d"e3d
e"e fd&�Z4d�ded"e3d
e8e fd'�Z9e5d fded!e7dee6f d"e3d
e"e fd(�Z:d�ded"e3d
e8e fd)�Z;e5d fded!e7dee6f d"e3d
e"e fd*�Z<d�ded"e3d
e8e fd+�Z= d�ded!e7dee6f d,eee8e> f d"e3d
e"e f
d-�Z? d�ded,eee8e> f d"e3d
e8e fd.�Z@d�de>de"e d
efd/�ZAed
eeeBjC jD f fd0�� � ZCd�ded!e"e d
e"e fd1�ZE d�dede7ee>f d3e"e d4e"e7eFeGeHjH f d5ed6e"eF d ed
dfd7�ZI d�ded5ed3e"e d
dfd8�ZJd�d5ed3e"e d
dfd9�ZK d�dede7ee>f d6e"eF d;e"e) d ed
dfd<�ZL d�dede7ee>f d;e"e) d
e>fd=�ZM d�dede"e d?eFd@e"e) d
e"e> f
dA�ZN d�dede"e d
e"e) fdB�ZO d�dCedDe3dEe"e) d
dfdF�ZPdGe7ee>eQf d
dfdH�ZRdIed ed
dJfdK�ZSdLeTe d
efdM�ZUdNeTe> d
e>fdO�ZVdPeTe d
efdQ�ZWdReTe> d
e>fdS�ZXdIed ed
e>fdT�ZYd
eeef fdU�ZZdVed
e[j\ fdW�Z]d�dXe3d
dJfdY�Z^d�dGe"e7ee>eQf d
dJfdZ�Z_d
e`ja fd[�Zbd�d\�Zcd�de)d ed
dfd^�Zdde)d ed
dfd_�Zeed
efjg jh fd`�� � Zgegji defjg jh d
dfda�� � Zgd
e"efjg jh fdb�Zjd�d!ed
efjg jh fdd�Zked
efde�� � Zlelji ded
dfdf�� � Zld
efdg�Zmd
efdh�Znd
e"e fdi�Zoed
e>fdj�� � Zpd
eGe"e) e>eFf fdk�Zqdled
eGe"e) e"e> e"eF f fdm�Zrd�dn�Zsd
efdo�Zt d�d5edpe"e3 d ed
efdq�Zud�dedsed
dfdt�Zvdeded
efdu�Zwd
e"e fdv�Zxd�dw�Zyd
e3fdx�Zzdye8dz de>d e>d
dfd{�Z{dGe>d
e"e#d fd|�Z|d�d}�Z}d
efd~�Z~ded
dfd��Z�d�d�de"e d�e"e� d
dfd��Z�ded�e�d� d
e�d�ef fd��Z�d�e�d�ef d
e�d�ef fd��Z�d�d��Z�� xZ�S )��RequestHandleraF Base class for HTTP request handlers.
Subclasses must define at least one of the methods defined in the
"Entry points" section below.
Applications should not construct `RequestHandler` objects
directly and subclasses should not override ``__init__`` (override
`~RequestHandler.initialize` instead).
)�GET�HEAD�POST�DELETE�PATCH�PUT�OPTIONSz[\x00-\x08\x0e-\x1f]FN�application�Application�request�kwargs�returnc � �� � t � � � � � |� _ |� _ d� _ d� _ d� _ d � _ t � fd�|j �
� � D � � � � � _ t � |j
� � � j d<