[25382] 2016-08-16_搭个Web服务器(二)

文档创建者:s7ckTeam
浏览次数:2
最后更新:2025-01-19
2016-08-16_搭个Web服务器(二)   W e b     S t d i o A   L i n u x   2 0 1 6 - 0 8 - 1 6   W e b     D j a n g o ,   F l a s k     P y r a m i d     W e b     W e b     P y t h o n   W e b     W e b  

  W e b     W e b     W e b     P y t h o n   W e b   S e r v e r   G a t e w a y   I n t e r f a c e W e b   [ 1 ]   W S G I [ 2 ] w i z g y W S G I     W e b     W e b     W e b   使   D j a n g o [ 3 ] F l a s k [ 4 ]     P y r a m i d [ 5 ]   G u n i c o r n [ 6 ] N g i n x / u W S G I [ 7 ]   W a i t r e s s [ 8 ]     W S G I  
W S G I     W e b     W S G I     P y t h o n   W e b     W S G I   使   W e b   使   W e b     W e b     W e b     W S G I   使 使 J a v a     S e r v l e t   A P I   R u b y     R a c k S h o w   m e   t h e   c o d e !     W S G I   5 .   7 .   1 .   # # #   使   P y t h o n   2 . 7 . 9   L i n u x     M a c   O S   X   2 .   i m p o r t   s o c k e t 3 .   i m p o r t   S t r i n g I O 4 .   i m p o r t   s y s 6 .   c l a s s   W S G I S e r v e r ( o b j e c t ) :
1 1 .   3 0 .   3 3 .   8 .           a d d r e s s _ f a m i l y   =   s o c k e t . A F _ I N E T 9 .           s o c k e t _ t y p e   =   s o c k e t . S O C K _ S T R E A M 1 0 .           r e q u e s t _ q u e u e _ s i z e   =   1 1 2 .           d e f   _ _ i n i t _ _ ( s e l f ,   s e r v e r _ a d d r e s s ) : 1 3 .                   # # #   1 4 .                   s e l f . l i s t e n _ s o c k e t   =   l i s t e n _ s o c k e t   =   s o c k e t . s o c k e t ( 1 5 .                           s e l f . a d d r e s s _ f a m i l y , 1 6 .                           s e l f . s o c k e t _ t y p e 1 7 .                   ) 1 8 .                   # # #   1 9 .                   l i s t e n _ s o c k e t . s e t s o c k o p t ( s o c k e t . S O L _ S O C K E T ,   s o c k e t . S O _ R E U S E A D D R ,   1 ) 2 0 .                   # # #   2 1 .                   l i s t e n _ s o c k e t . b i n d ( s e r v e r _ a d d r e s s ) 2 2 .                   # # #   2 3 .                   l i s t e n _ s o c k e t . l i s t e n ( s e l f . r e q u e s t _ q u e u e _ s i z e ) 2 4 .                   # # #   2 5 .                   h o s t ,   p o r t   =   s e l f . l i s t e n _ s o c k e t . g e t s o c k n a m e ( ) [ : 2 ] 2 6 .                   s e l f . s e r v e r _ n a m e   =   s o c k e t . g e t f q d n ( h o s t ) 2 7 .                   s e l f . s e r v e r _ p o r t   =   p o r t 2 8 .                   # # #     W e b   / 2 9 .                   s e l f . h e a d e r s _ s e t   =   [ ] 3 1 .           d e f   s e t _ a p p ( s e l f ,   a p p l i c a t i o n ) : 3 2 .                   s e l f . a p p l i c a t i o n   =   a p p l i c a t i o n 3 4 .           d e f   s e r v e _ f o r e v e r ( s e l f ) : 3 5 .                   l i s t e n _ s o c k e t   =   s e l f . l i s t e n _ s o c k e t 3 6 .                   w h i l e   T r u e : 3 7 .                           # # #  
4 1 .   4 9 .   5 1 .   5 4 .   5 8 .   6 1 .   3 8 .                           s e l f . c l i e n t _ c o n n e c t i o n ,   c l i e n t _ a d d r e s s   =   l i s t e n _ s o c k e t . a c c e p t ( ) 3 9 .                           # # #   4 0 .                           s e l f . h a n d l e _ o n e _ r e q u e s t ( ) 4 2 .           d e f   h a n d l e _ o n e _ r e q u e s t ( s e l f ) : 4 3 .                   s e l f . r e q u e s t _ d a t a   =   r e q u e s t _ d a t a   =   s e l f . c l i e n t _ c o n n e c t i o n . r e c v ( 1 0 2 4 ) 4 4 .                   # # #     ' c u r l   - v '   4 5 .                   p r i n t ( ' ' . j o i n ( 4 6 .                           ' <   { l i n e } n ' . f o r m a t ( l i n e = l i n e ) 4 7 .                           f o r   l i n e   i n   r e q u e s t _ d a t a . s p l i t l i n e s ( ) 4 8 .                   ) ) 5 0 .                   s e l f . p a r s e _ r e q u e s t ( r e q u e s t _ d a t a ) 5 2 .                   # # #   5 3 .                   e n v   =   s e l f . g e t _ e n v i r o n ( ) 5 5 .                   # # #     W e b   5 6 .                   # # #     H T T P   5 7 .                   r e s u l t   =   s e l f . a p p l i c a t i o n ( e n v ,   s e l f . s t a r t _ r e s p o n s e ) 5 9 .                   # # #   6 0 .                   s e l f . f i n i s h _ r e s p o n s e ( r e s u l t ) 6 2 .           d e f   p a r s e _ r e q u e s t ( s e l f ,   t e x t ) : 6 3 .                   r e q u e s t _ l i n e   =   t e x t . s p l i t l i n e s ( ) [ 0 ] 6 4 .                   r e q u e s t _ l i n e   =   r e q u e s t _ l i n e . r s t r i p ( ' r n ' ) 6 5 .                   # # #   6 6 .                   ( s e l f . r e q u e s t _ m e t h o d ,     #   G E T 6 7 .                     s e l f . p a t h ,                         #   / h e l l o 6 8 .                     s e l f . r e q u e s t _ v e r s i o n     #   H T T P / 1 . 1
7 0 .   9 0 .   6 8 .                     s e l f . r e q u e s t _ v e r s i o n     #   H T T P / 1 . 1 6 9 .                     )   =   r e q u e s t _ l i n e . s p l i t ( ) 7 1 .           d e f   g e t _ e n v i r o n ( s e l f ) : 7 2 .                   e n v   =   { } 7 3 .                   # # #     P E P 8   7 4 .                   # # #   7 5 .                   # # # 7 6 .                   # # #   W S G I   7 7 .                   e n v [ ' w s g i . v e r s i o n ' ]             =   ( 1 ,   0 ) 7 8 .                   e n v [ ' w s g i . u r l _ s c h e m e ' ]       =   ' h t t p ' 7 9 .                   e n v [ ' w s g i . i n p u t ' ]                 =   S t r i n g I O . S t r i n g I O ( s e l f . r e q u e s t _ d a t a ) 8 0 .                   e n v [ ' w s g i . e r r o r s ' ]               =   s y s . s t d e r r 8 1 .                   e n v [ ' w s g i . m u l t i t h r e a d ' ]     =   F a l s e 8 2 .                   e n v [ ' w s g i . m u l t i p r o c e s s ' ]   =   F a l s e 8 3 .                   e n v [ ' w s g i . r u n _ o n c e ' ]           =   F a l s e 8 4 .                   # # #   C G I   8 5 .                   e n v [ ' R E Q U E S T _ M E T H O D ' ]         =   s e l f . r e q u e s t _ m e t h o d         #   G E T 8 6 .                   e n v [ ' P A T H _ I N F O ' ]                   =   s e l f . p a t h                             #   / h e l l o 8 7 .                   e n v [ ' S E R V E R _ N A M E ' ]               =   s e l f . s e r v e r _ n a m e               #   l o c a l h o s t 8 8 .                   e n v [ ' S E R V E R _ P O R T ' ]               =   s t r ( s e l f . s e r v e r _ p o r t )     #   8 8 8 8 8 9 .                   r e t u r n   e n v 9 1 .           d e f   s t a r t _ r e s p o n s e ( s e l f ,   s t a t u s ,   r e s p o n s e _ h e a d e r s ,   e x c _ i n f o = N o n e ) : 9 2 .                   # # #   9 3 .                   s e r v e r _ h e a d e r s   =   [ 9 4 .                           ( ' D a t e ' ,   ' T u e ,   3 1   M a r   2 0 1 5   1 2 : 5 4 : 4 8   G M T ' ) , 9 5 .                           ( ' S e r v e r ' ,   ' W S G I S e r v e r   0 . 2 ' ) , 9 6 .                   ] 9 7 .                   s e l f . h e a d e r s _ s e t   =   [ s t a t u s ,   r e s p o n s e _ h e a d e r s   +   s e r v e r _ h e a d e r s ] 9 8 .                   # # #     W S G I   s t a r t _ r e s p o n s e     ' w r i t e '
1 0 2 .   1 2 0 .   1 2 2 .   1 2 7 .   9 9 .                   # # #   . w r i t e   便 1 0 0 .                   # # #   1 0 1 .                   # # #   r e t u r n   s e l f . f i n i s h _ r e s p o n s e 1 0 3 .           d e f   f i n i s h _ r e s p o n s e ( s e l f ,   r e s u l t ) : 1 0 4 .                   t r y : 1 0 5 .                           s t a t u s ,   r e s p o n s e _ h e a d e r s   =   s e l f . h e a d e r s _ s e t 1 0 6 .                           r e s p o n s e   =   ' H T T P / 1 . 1   { s t a t u s } r n ' . f o r m a t ( s t a t u s = s t a t u s ) 1 0 7 .                           f o r   h e a d e r   i n   r e s p o n s e _ h e a d e r s : 1 0 8 .                                   r e s p o n s e   + =   ' { 0 } :   { 1 } r n ' . f o r m a t ( * h e a d e r ) 1 0 9 .                           r e s p o n s e   + =   ' r n ' 1 1 0 .                           f o r   d a t a   i n   r e s u l t : 1 1 1 .                                   r e s p o n s e   + =   d a t a 1 1 2 .                           # # #     ' c u r l   - v '   1 1 3 .                           p r i n t ( ' ' . j o i n ( 1 1 4 .                                   ' >   { l i n e } n ' . f o r m a t ( l i n e = l i n e ) 1 1 5 .                                   f o r   l i n e   i n   r e s p o n s e . s p l i t l i n e s ( ) 1 1 6 .                           ) ) 1 1 7 .                           s e l f . c l i e n t _ c o n n e c t i o n . s e n d a l l ( r e s p o n s e ) 1 1 8 .                   f i n a l l y : 1 1 9 .                           s e l f . c l i e n t _ c o n n e c t i o n . c l o s e ( ) 1 2 1 .   S E R V E R _ A D D R E S S   =   ( H O S T ,   P O R T )   =   ' ' ,   8 8 8 8 1 2 3 .   d e f   m a k e _ s e r v e r ( s e r v e r _ a d d r e s s ,   a p p l i c a t i o n ) : 1 2 4 .           s e r v e r   =   W S G I S e r v e r ( s e r v e r _ a d d r e s s ) 1 2 5 .           s e r v e r . s e t _ a p p ( a p p l i c a t i o n ) 1 2 6 .           r e t u r n   s e r v e r 1 2 8 .   i f   _ _ n a m e _ _   = =   ' _ _ m a i n _ _ ' : 1 2 9 .           i f   l e n ( s y s . a r g v )   <   2 :
  1 5 0     W e b     P y r a m i d F l a s k D j a n g o     P y t h o n   W S G I       G i t h u b [ 9 ]   退   W e b     P y t h o n P y r a m i d F l a s k     D j a n g o         W e b   1 2 9 .           i f   l e n ( s y s . a r g v )   <   2 : 1 3 0 .                   s y s . e x i t ( ' P r o v i d e   a   W S G I   a p p l i c a t i o n   o b j e c t   a s   m o d u l e : c a l l a b l e ' ) 1 3 1 .           a p p _ p a t h   =   s y s . a r g v [ 1 ] 1 3 2 .           m o d u l e ,   a p p l i c a t i o n   =   a p p _ p a t h . s p l i t ( ' : ' ) 1 3 3 .           m o d u l e   =   _ _ i m p o r t _ _ ( m o d u l e ) 1 3 4 .           a p p l i c a t i o n   =   g e t a t t r ( m o d u l e ,   a p p l i c a t i o n ) 1 3 5 .           h t t p d   =   m a k e _ s e r v e r ( S E R V E R _ A D D R E S S ,   a p p l i c a t i o n ) 1 3 6 .           p r i n t ( ' W S G I S e r v e r :   S e r v i n g   H T T P   o n   p o r t   { p o r t }   . . . n ' . f o r m a t ( p o r t = P O R T ) ) 1 3 7 .           h t t p d . s e r v e _ f o r e v e r ( ) w e b s e r v e r 2 . p y 1 .   $   p y t h o n   w e b s e r v e r 2 . p y 2 .   P r o v i d e   a   W S G I   a p p l i c a t i o n   o b j e c t   a s   m o d u l e : c a l l a b l e v i r t u a l e n v 1 .   $   [ s u d o ]   p i p   i n s t a l l   v i r t u a l e n v 2 .   $   m k d i r   ~ / e n v s 3 .   $   v i r t u a l e n v   ~ / e n v s / l s b a w s / 4 .   $   c d   ~ / e n v s / l s b a w s / 5 .   $   l s 6 .   b i n     i n c l u d e     l i b 7 .   $   s o u r c e   b i n / a c t i v a t e 8 .   ( l s b a w s )   $   p i p   i n s t a l l   p y r a m i d 9 .   ( l s b a w s )   $   p i p   i n s t a l l   f l a s k
  W e b     P y r a m i d         G i t h u b [ 1 0 ]   3 .   9 .     W e b     P y r a m i d     P y t h o n           P y r a m i d     h t t p : / / l o c a l h o s t : 8 8 8 8 / h e l l o   9 .   ( l s b a w s )   $   p i p   i n s t a l l   f l a s k 1 0 .   ( l s b a w s )   $   p i p   i n s t a l l   d j a n g o p y r a m i d a p p . p y w e b s e r v e r 2 . p y 1 .   f r o m   p y r a m i d . c o n f i g   i m p o r t   C o n f i g u r a t o r 2 .   f r o m   p y r a m i d . r e s p o n s e   i m p o r t   R e s p o n s e 4 .   d e f   h e l l o _ w o r l d ( r e q u e s t ) : 5 .           r e t u r n   R e s p o n s e ( 6 .                   ' H e l l o   w o r l d   f r o m   P y r a m i d ! n ' , 7 .                   c o n t e n t _ t y p e = ' t e x t / p l a i n ' , 8 .           ) 1 0 .   c o n f i g   =   C o n f i g u r a t o r ( ) 1 1 .   c o n f i g . a d d _ r o u t e ( ' h e l l o ' ,   ' / h e l l o ' ) 1 2 .   c o n f i g . a d d _ v i e w ( h e l l o _ w o r l d ,   r o u t e _ n a m e = ' h e l l o ' ) 1 3 .   a p p   =   c o n f i g . m a k e _ w s g i _ a p p ( ) 1 .   ( l s b a w s )   $   p y t h o n   w e b s e r v e r 2 . p y   p y r a m i d a p p : a p p 2 .   W S G I S e r v e r :   S e r v i n g   H T T P   o n   p o r t   8 8 8 8   . . . p y r a m i d a p p a p p
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则