[25480] 2016-09-13_从零构建一个简单的Python框架

文档创建者:s7ckTeam
浏览次数:1
最后更新:2025-01-19
2016-09-13_从零构建一个简单的Python框架   P y t h o n     C a t h o n   L i n u x   2 0 1 6 - 0 9 - 1 3   w e b     w e b     w e b   [ 1 ]   w e b   - 访 W e b   使   w e b     R a i l s     D j a n g o   b a t t e r i e s - i n c l u d e d   P y t h o n     H T T P     G E T     P O S T     w i k i [ 2 ]     H T T P     P y t h o n   3     a s y n c i o  
  A P I     H T T P   1 . 1   t r a n s f e r - e n c o d i n g h t t p - a u t h H T T P   c o n t e n t - e n c o d i n g   g z i p [ 3 ]   M I M E     -     W S G I   -     T C P     A P I 3 .   4 .   1 1 .   1 2 .   1 6 .   1 .   f r o m   d i y _ f r a m e w o r k   i m p o r t   A p p ,   R o u t e r 2 .   f r o m   d i y _ f r a m e w o r k . h t t p _ u t i l s   i m p o r t   R e s p o n s e 5 .   #   G E T   s i m p l e   r o u t e 6 .   a s y n c   d e f   h o m e ( r ) : 7 .           r s p   =   R e s p o n s e ( ) 8 .           r s p . s e t _ h e a d e r ( ' C o n t e n t - T y p e ' ,   ' t e x t / h t m l ' ) 9 .           r s p . b o d y   =   ' < h t m l > < b o d y > < b > t e s t < / b > < / b o d y > < / h t m l > ' 1 0 .           r e t u r n   r s p 1 3 .   #   G E T   r o u t e   +   p a r a m s 1 4 .   a s y n c   d e f   w e l c o m e ( r ,   n a m e ) : 1 5 .           r e t u r n   " W e l c o m e   { } " . f o r m a t ( n a m e ) 1 7 .   #   P O S T   r o u t e   +   b o d y   p a r a m 1 8 .   a s y n c   d e f   p a r s e _ f o r m ( r ) : 1 9 .           i f   r . m e t h o d   = =   ' G E T ' : 2 0 .                   r e t u r n   ' f o r m '
2 4 .   2 6 .   3 3 .   '     T C P     H T T P S e r v e r     R o u t e r     h t t p _ p a r s e r   使 H T T P C o n n e c t i o n     H T T P   - 使   h t t p _ p a r s e r     R e q u e s t   使   R o u t e r     R e q u e s t     R e s p o n s e   :   R o u t e r     U R L     A p p   使   H T T P S e r v e r                   r e t u r n   ' f o r m ' 2 1 .           e l s e : 2 2 .                   n a m e   =   r . b o d y . g e t ( ' n a m e ' ,   ' ' ) [ 0 ] 2 3 .                   p a s s w o r d   =   r . b o d y . g e t ( ' p a s s w o r d ' ,   ' ' ) [ 0 ] 2 5 .                 r e t u r n   " { 0 } : { 1 } " . f o r m a t ( n a m e ,   p a s s w o r d ) 2 7 .   #   a p p l i c a t i o n   =   r o u t e r   +   h t t p   s e r v e r 2 8 .   r o u t e r   =   R o u t e r ( ) 2 9 .   r o u t e r . a d d _ r o u t e s ( { 3 0 .           r ' / w e l c o m e / { n a m e } ' :   w e l c o m e , 3 1 .           r ' / ' :   h o m e , 3 2 .           r ' / l o g i n ' :   p a r s e _ f o r m , } ) 3 4 .   a p p   =   A p p ( r o u t e r ) 3 5 .   a p p . s t a r t _ s e r v e r ( ) R e s p o n s e s t a r t _ s e r v e r
  H T T P     T C P   使   T C P   D N S   T C P   [ 4 ]   a s y n c i o - s t r e a m [ 5 ]     a s y n c i o   [ 6 ] 使   T C P   [ 7 ] 6 .   使 H T T P C o n n e c t i o n H T T P C o n n e c t i o n a s y n c i o . S t r e a m R e a d e r R e q u e s t a s y n c i o . S t r e a m W r i t e r 1 .   c l a s s   H T T P C o n n e c t i o n ( o b j e c t ) : 2 .           d e f   i n i t ( s e l f ,   h t t p _ s e r v e r ,   r e a d e r ,   w r i t e r ) : 3 .                   s e l f . r o u t e r   =   h t t p _ s e r v e r . r o u t e r 4 .                   s e l f . h t t p _ p a r s e r   =   h t t p _ s e r v e r . h t t p _ p a r s e r 5 .                   s e l f . l o o p   =   h t t p _ s e r v e r . l o o p 7 .                   s e l f . _ r e a d e r   =   r e a d e r 8 .                   s e l f . _ w r i t e r   =   w r i t e r 9 .                   s e l f . _ b u f f e r   =   b y t e a r r a y ( ) 1 0 .                   s e l f . _ c o n n _ t i m e o u t   =   N o n e 1 1 .                   s e l f . r e q u e s t   =   R e q u e s t ( ) i n i t r o u t e r h t t p _ p a r s e r
  T C P   [ 8 ]   a s y n c i o . H a n d l e [ 9 ]   1 7 .   l o o p _ c o n n _ t i m e o u t R e q u e s t 1 .   a s y n c   d e f   h a n d l e _ r e q u e s t ( s e l f ) : 2 .           t r y : 3 .                   w h i l e   n o t   s e l f . r e q u e s t . f i n i s h e d   a n d   n o t   s e l f . _ r e a d e r . a t _ e o f ( ) : 4 .                           d a t a   =   a w a i t   s e l f . _ r e a d e r . r e a d ( 1 0 2 4 ) 5 .                           i f   d a t a : 6 .                                   s e l f . _ r e s e t _ c o n n _ t i m e o u t ( ) 7 .                                   a w a i t   s e l f . p r o c e s s _ d a t a ( d a t a ) 8 .                   i f   s e l f . r e q u e s t . f i n i s h e d : 9 .                           a w a i t   s e l f . r e p l y ( ) 1 0 .                   e l i f   s e l f . _ r e a d e r . a t _ e o f ( ) : 1 1 .                           r a i s e   B a d R e q u e s t E x c e p t i o n ( ) 1 2 .           e x c e p t   ( N o t F o u n d E x c e p t i o n , 1 3 .                           B a d R e q u e s t E x c e p t i o n )   a s   e : 1 4 .                   s e l f . e r r o r _ r e p l y ( e . c o d e ,   b o d y = R e s p o n s e . r e a s o n _ p h r a s e s [ e . c o d e ] ) 1 5 .           e x c e p t   E x c e p t i o n   a s   e : 1 6 .                   s e l f . e r r o r _ r e p l y ( 5 0 0 ,   b o d y = R e s p o n s e . r e a s o n _ p h r a s e s [ 5 0 0 ] ) 1 8 .           s e l f . c l o s e _ c o n n e c t i o n ( ) t r y - e x c e p t w h i l e s e l f . r e q u e s t . f i n i s h e d
  T r u e   使   T r u e     C P U   西 D o S 3 .   s e l f . r e q u e s t . f i n i s h e d s e l f . _ r e a d e r _ a t _ e o f ( ) S t r e a m R e a d e r s e l f . p r o c e s s _ d a t a ( d a t a ) s e l f . r e q u e s t s e l f . _ r e a d e r . r e a d ( ) b ' ' a w a i t   a s y n c i o . s l e e p ( 0 . 1 ) S t r e a m R e a d e r s e l f . _ r e s e t _ c o n n _ t i m e o u t ( ) t i m e o u t i n i t s e l f . _ r e s e t _ c o n n _ t i m e o u t ( ) i f - e l s e s e l f . c l o s e _ c o n n e c t i o n s e l f . p r o c e s s _ d a t a 1 .   a s y n c   d e f   p r o c e s s _ d a t a ( s e l f ,   d a t a ) : 2 .           s e l f . _ b u f f e r . e x t e n d ( d a t a ) 4 .           s e l f . _ b u f f e r   =   s e l f . h t t p _ p a r s e r . p a r s e _ i n t o (
D e p e n d e n c y   I n j e c t i o n [ 1 0 ] 使 使 使   m o c k [ 1 1 ]   4 .   6 .   9 .   5 .                   s e l f . r e q u e s t ,   s e l f . _ b u f f e r ) s e l f . _ b u f f e r s e l f . h t t p _ p a r s e r i n i t h t t p _ p a r s e r h t t p _ s e r v e r h t t p _ p a r s e r d i y _ f r a m e w o r k p a r s e _ i n t o p a r s e _ i n t o R e q u e s t H T T P C o n n e c t i o n h t t p _ p a r s e r r e p l y 1 .   a s y n c   d e f   r e p l y ( s e l f ) : 2 .           r e q u e s t   =   s e l f . r e q u e s t 3 .           h a n d l e r   =   s e l f . r o u t e r . g e t _ h a n d l e r ( r e q u e s t . p a t h ) 5 .           r e s p o n s e   =   a w a i t   h a n d l e r . h a n d l e ( r e q u e s t ) 7 .           i f   n o t   i s i n s t a n c e ( r e s p o n s e ,   R e s p o n s e ) : 8 .                   r e s p o n s e   =   R e s p o n s e ( c o d e = 2 0 0 ,   b o d y = r e s p o n s e )
使 使   i f   1 0 .           s e l f . _ w r i t e r . w r i t e ( r e s p o n s e . t o _ b y t e s ( ) ) 1 1 .           a w a i t   s e l f . _ w r i t e r . d r a i n ( ) H T T P C o n n e c t i o n H T T P S e r v e r r o u t e r g e t _ h a n d l e r N o t F o u n d E x c e p t i o n R e s p o n s e R e s p o n s e R e s p o n s e s e l f . _ w r i t e r S t r e a m W r i t e r a w a i t   s e l f . _ w r i t e r . d r a i n ( ) s e l f . _ w r i t e r . c l o s e ( ) H T T P C o n n e c t i o n 1 .   d e f   c l o s e _ c o n n e c t i o n ( s e l f ) : 2 .           s e l f . _ c a n c e l _ c o n n _ t i m e o u t ( ) 3 .           s e l f . _ w r i t e r . c l o s e ( ) _ r e s e t _ c p m m _ t i m e o u t ( )
4 .   8 .   使   B a s e E v e n t L o o p . c a l l _ l a t e r [ 1 2 ]   使 1 .   d e f   _ c o n n _ t i m e o u t _ c l o s e ( s e l f ) : 2 .           s e l f . e r r o r _ r e p l y ( 5 0 0 ,   ' t i m e o u t ' ) 3 .           s e l f . c l o s e _ c o n n e c t i o n ( ) 5 .   d e f   _ c a n c e l _ c o n n _ t i m e o u t ( s e l f ) : 6 .           i f   s e l f . _ c o n n _ t i m e o u t : 7 .                   s e l f . _ c o n n _ t i m e o u t . c a n c e l ( ) 9 .   d e f   _ r e s e t _ c o n n _ t i m e o u t ( s e l f ,   t i m e o u t = T I M E O U T ) : 1 0 .           s e l f . _ c a n c e l _ c o n n _ t i m e o u t ( ) 1 1 .           s e l f . _ c o n n _ t i m e o u t   =   s e l f . l o o p . c a l l _ l a t e r ( 1 2 .                   t i m e o u t ,   s e l f . _ c o n n _ t i m e o u t _ c l o s e ) _ r e s e t _ c o n n _ t i m e o u t s e l f . _ c o n n _ t i m e o u t a s y n c i o . H a n d l e _ c o n n _ t i m e o u t _ c l o s e t i m e o u t h a n d l e _ r e q u e s t _ c o n n _ t i m e o u t _ c l o s e t i m e o u t _ c o n n _ t i m e o u t _ c l o s e H T T P C o n n e c t i o n H T T P S e r v e r
使 6 .     a s y n c i o . s t a r t _ s e r v e r [ 1 3 ]     T C P   H T T P S e r v e r H T T P C o n n e c t i o n 1 .   c l a s s   H T T P S e r v e r ( o b j e c t ) : 2 .           d e f   i n i t ( s e l f ,   r o u t e r ,   h t t p _ p a r s e r ,   l o o p ) : 3 .                   s e l f . r o u t e r   =   r o u t e r 4 .                   s e l f . h t t p _ p a r s e r   =   h t t p _ p a r s e r 5 .                   s e l f . l o o p   =   l o o p 7 .           a s y n c   d e f   h a n d l e _ c o n n e c t i o n ( s e l f ,   r e a d e r ,   w r i t e r ) : 8 .                   c o n n e c t i o n   =   H T T P C o n n e c t i o n ( s e l f ,   r e a d e r ,   w r i t e r ) 9 .                   a s y n c i o . e n s u r e _ f u t u r e ( c o n n e c t i o n . h a n d l e _ r e q u e s t ( ) ,   l o o p = s e l f . l o o p ) H T T P S e r v e r h a n d l e _ c o n n e c t i o n H T T P C o n n e c t i o n S t r e a m R e a d e r S t r e a m W r i t e r 1 .         s e l f . _ s e r v e r   =   H T T P S e r v e r ( s e l f . r o u t e r ,   s e l f . h t t p _ p a r s e r ,   s e l f . l o o p ) 2 .         s e l f . _ c o n n e c t i o n _ h a n d l e r   =   a s y n c i o . s t a r t _ s e r v e r ( 3 .                   s e l f . _ s e r v e r . h a n d l e _ c o n n e c t i o n , 4 .                   h o s t = s e l f . h o s t , 5 .                   p o r t = s e l f . p o r t , 6 .                   r e u s e _ a d d r e s s = T r u e , 7 .                   r e u s e _ p o r t = T r u e , 8 .                   l o o p = s e l f . l o o p )
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则