[25257] 2016-07-17_用Python、RabbitMQ和Nameko实现微服务

文档创建者:s7ckTeam
浏览次数:1
最后更新:2025-01-18
2016-07-17_用Python、RabbitMQ和Nameko实现微服务   P y t h o n   R a b b i t M Q     N a m e k o     m r - p i n g   L i n u x   2 0 1 6 - 0 7 - 1 7 " "   -     P y t h o n   N a m e k o   使   -   M .   F o w l e r   F o w l e r   [ 1 ]   r e s p o n s i b i l i t i e s   b l o c k s c o m m o n   p o i n t   g i t h u b :   h t t p : / / g i t h u b . c o m / r o c h a c b r u n o / n a m e k o - e x a m p l e   访   s e r v i c e     a p i     R E S T   A P I     A P I   L C T T   R E S T     A P I     " O K   -   "  
  R a b b i t M Q L C T T   R a b b i t M Q [ 2 ]     V i r t u a l E n v     S e r v i c e s     V i r t u a l E n v     A P I   R a b b i t 使   R a b b i t M Q     d o c k e r     D o c k e r   访   h t t p : / / l o c a l h o s t : 1 5 6 7 2   使   g u e s t : g u e s t     R a b b i t M Q   1 .   d o c k e r   r u n   - d   - - h o s t n a m e   m y - r a b b i t   - - n a m e   s o m e - r a b b i t   - p   1 5 6 7 2 : 1 5 6 7 2   - p   5 6 7 2 : 5 6 7 2   r a b b i t m q : 3 - m a n a g e m e n t
  S h e l l     v i r t u a l e n v   使   v i r t u a l e n v - w r a p p e r   n a m e k o     y a g m a i l   v i r t u a l e n v     A P I   1 .   $   m k d i r   m y p r o j e c t 2 .   $   c d   m y p r o j e c t 1 .   $   v i r t u a l e n v   s e r v i c e _ e n v 2 .   $   s o u r c e   s e r v i c e _ e n v / b i n / a c t i v a t e 1 .   ( s e r v i c e _ e n v ) $   p i p   i n s t a l l   n a m e k o 2 .   ( s e r v i c e _ e n v ) $   p i p   i n s t a l l   y a g m a i l
  n a m e k o     R P C     p y t h o n       3 .   6 .   1 5 .   1 9 .   s e r v i c e . p y 1 .   i m p o r t   y a g m a i l 2 .   f r o m   n a m e k o . r p c   i m p o r t   r p c ,   R p c P r o x y 4 .   c l a s s   M a i l ( o b j e c t ) : 5 .           n a m e   =   " m a i l " 7 .           @ r p c 8 .           d e f   s e n d ( s e l f ,   t o ,   s u b j e c t ,   c o n t e n t s ) : 9 .                   y a g   =   y a g m a i l . S M T P ( ' m y n a m e @ g m a i l . c o m ' ,   ' m y p a s s w o r d ' ) 1 0 .                   #   1 1 .                   #   :     D y n a c o n f   1 2 .                   y a g . s e n d ( t o = t o . e n c o d e ( ' u t f - 8 ) ,   1 3 .                                     s u b j e c t = s u b j e c t . e n c o d e ( ' u t f - 8 ) ,   1 4 .                                     c o n t e n t s = [ c o n t e n t s . e n c o d e ( ' u t f - 8 ) ] ) 1 6 .   c l a s s   C o m p u t e ( o b j e c t ) : 1 7 .           n a m e   =   " c o m p u t e " 1 8 .           m a i l   =   R p c P r o x y ( ' m a i l ' )         2 0 .           @ r p c 2 1 .           d e f   c o m p u t e ( s e l f ,   o p e r a t i o n ,   v a l u e ,   o t h e r ,   e m a i l ) : 2 2 .                   o p e r a t i o n s   =   { ' s u m ' :   l a m b d a   x ,   y :   i n t ( x )   +   i n t ( y ) , 2 3 .                                               ' m u l ' :   l a m b d a   x ,   y :   i n t ( x )   *   i n t ( y ) , 2 4 .                                               ' d i v ' :   l a m b d a   x ,   y :   i n t ( x )   /   i n t ( y ) , 2 5 .                                               ' s u b ' :   l a m b d a   x ,   y :   i n t ( x )   -   i n t ( y ) } 2 6 .                   t r y : 2 7 .                           r e s u l t   =   o p e r a t i o n s [ o p e r a t i o n ] ( v a l u e ,   o t h e r ) 2 8 .                   e x c e p t   E x c e p t i o n   a s   e : 2 9 .                           s e l f . m a i l . s e n d . a s y n c ( e m a i l ,   " A n   e r r o r   o c c u r r e d " ,   s t r ( e ) )
  N a m e k o   R P C   s e r v i c e   使   s u p e r v i s o r d     S h e l l     S h e l l   使   n a m e k o   s h e l l     R P C   S h e l l     n . r p c   使 2 9 .                           s e l f . m a i l . s e n d . a s y n c ( e m a i l ,   " A n   e r r o r   o c c u r r e d " ,   s t r ( e ) ) 3 0 .                           r a i s e 3 1 .                   e l s e : 3 2 .                           s e l f . m a i l . s e n d . a s y n c ( 3 3 .                                   e m a i l ,   3 4 .                                   " Y o u r   o p e r a t i o n   i s   c o m p l e t e ! " ,   3 5 .                                   " T h e   r e s u l t   i s :   % s "   %   r e s u l t 3 6 .                           ) 3 7 .                           r e t u r n   r e s u l t 1 .   ( s e r v i c e _ e n v ) $   n a m e k o   r u n   s e r v i c e   - - b r o k e r   a m q p : / / g u e s t : g u e s t @ l o c a l h o s t 2 .   s t a r t i n g   s e r v i c e s :   m a i l ,   c o m p u t e 3 .   C o n n e c t e d   t o   a m q p : / / g u e s t : * * @ 1 2 7 . 0 . 0 . 1 : 5 6 7 2 / / 4 .   C o n n e c t e d   t o   a m q p : / / g u e s t : * * @ 1 2 7 . 0 . 0 . 1 : 5 6 7 2 / / 1 .   ( s e r v i c e _ e n v ) $   n a m e k o   s h e l l   - - b r o k e r   a m q p : / / g u e s t : g u e s t @ l o c a l h o s t 2 .   N a m e k o   P y t h o n   2 . 7 . 9   ( d e f a u l t ,   A p r     2   2 0 1 5 ,   1 5 : 3 3 : 2 1 )   3 .   [ G C C   4 . 9 . 2 ]   s h e l l   o n   l i n u x 2 4 .   B r o k e r :   a m q p : / / g u e s t : g u e s t @ l o c a l h o s t 5 .   > > > 1 .   > > >   n . r p c . m a i l . s e n d ( " n a m e @ e m a i l . c o m " ,   " t e s t i n g " ,   " J u s t   t e s t i n g " )
  A P I     S h e l l     A P I     v i r t u a l e n v   使   v i r t u a l e n v - w r a p p e r   N a m e k o   F l a s k     F l a s g g e r     A P I     y a g m a i l       1 .   > > >   n . r p c . c o m p u t e . c o m p u t e ( ' s u m ' ,   3 0 ,   1 0 ,   " n a m e @ e m a i l . c o m " ) 2 .   4 0 3 .   > > >   n . r p c . c o m p u t e . c o m p u t e ( ' s u b ' ,   3 0 ,   1 0 ,   " n a m e @ e m a i l . c o m " ) 4 .   2 0 5 .   > > >   n . r p c . c o m p u t e . c o m p u t e ( ' m u l ' ,   3 0 ,   1 0 ,   " n a m e @ e m a i l . c o m " ) 6 .   3 0 0 7 .   > > >   n . r p c . c o m p u t e . c o m p u t e ( ' d i v ' ,   3 0 ,   1 0 ,   " n a m e @ e m a i l . c o m " ) 8 .   3 1 .   $   v i r t u a l e n v   a p i _ e n v 2 .   $   s o u r c e   a p i _ e n v / b i n / a c t i v a t e 1 .   ( a p i _ e n v ) $   p i p   i n s t a l l   n a m e k o 2 .   ( a p i _ e n v ) $   p i p   i n s t a l l   f l a s k 3 .   ( a p i _ e n v ) $   p i p   i n s t a l l   f l a s g g e r a p i . p y 1 .   f r o m   f l a s k   i m p o r t   F l a s k ,   r e q u e s t 2 .   f r o m   f l a s g g e r   i m p o r t   S w a g g e r 3 .   f r o m   n a m e k o . s t a n d a l o n e . r p c   i m p o r t   C l u s t e r R p c P r o x y
4 .   8 .   9 .   5 .   a p p   =   F l a s k ( _ _ n a m e _ _ ) 6 .   S w a g g e r ( a p p ) 7 .   C O N F I G   =   { ' A M Q P _ U R I ' :   " a m q p : / / g u e s t : g u e s t @ l o c a l h o s t " } 1 0 .   @ a p p . r o u t e ( ' / c o m p u t e ' ,   m e t h o d s = [ ' P O S T ' ] ) 1 1 .   d e f   c o m p u t e ( ) : 1 2 .           " " " 1 3 .           M i c r o   S e r v i c e   B a s e d   C o m p u t e   a n d   M a i l   A P I 1 4 .           T h i s   A P I   i s   m a d e   w i t h   F l a s k ,   F l a s g g e r   a n d   N a m e k o 1 5 .           - - - 1 6 .           p a r a m e t e r s : 1 7 .               -   n a m e :   b o d y 1 8 .                   i n :   b o d y 1 9 .                   r e q u i r e d :   t r u e 2 0 .                   s c h e m a : 2 1 .                       i d :   d a t a 2 2 .                       p r o p e r t i e s : 2 3 .                           o p e r a t i o n : 2 4 .                               t y p e :   s t r i n g 2 5 .                               e n u m : 2 6 .                                   -   s u m 2 7 .                                   -   m u l 2 8 .                                   -   s u b 2 9 .                                   -   d i v 3 0 .                           e m a i l : 3 1 .                               t y p e :   s t r i n g 3 2 .                           v a l u e : 3 3 .                               t y p e :   i n t e g e r 3 4 .                           o t h e r : 3 5 .                               t y p e :   i n t e g e r 3 6 .           r e s p o n s e s : 3 7 .               2 0 0 : 3 8 .                   d e s c r i p t i o n :   P l e a s e   w a i t   t h e   c a l c u l a t i o n ,   y o u ' l l   r e c e i v e   a n   e m a i l   w i t h   r e s u l t s
5 2 .     s h e l l   访   h t t p : / / l o c a l h o s t : 5 0 0 0 / a p i d o c s / i n d e x . h t m l     u r l   F l a s g g e r     A P I   3 9 .           " " " 4 0 .           o p e r a t i o n   =   r e q u e s t . j s o n . g e t ( ' o p e r a t i o n ' ) 4 1 .           v a l u e   =   r e q u e s t . j s o n . g e t ( ' v a l u e ' ) 4 2 .           o t h e r   =   r e q u e s t . j s o n . g e t ( ' o t h e r ' ) 4 3 .           e m a i l   =   r e q u e s t . j s o n . g e t ( ' e m a i l ' ) 4 4 .           m s g   =   " P l e a s e   w a i t   t h e   c a l c u l a t i o n ,   y o u ' l l   r e c e i v e   a n   e m a i l   w i t h   r e s u l t s " 4 5 .           s u b j e c t   =   " A P I   N o t i f i c a t i o n " 4 6 .           w i t h   C l u s t e r R p c P r o x y ( C O N F I G )   a s   r p c : 4 7 .                   #   a s y n c h r o n o u s l y   s p a w n i n g   a n d   e m a i l   n o t i f i c a t i o n 4 8 .                   r p c . m a i l . s e n d . a s y n c ( e m a i l ,   s u b j e c t ,   m s g ) 4 9 .                   #   a s y n c h r o n o u s l y   s p a w n i n g   t h e   c o m p u t e   t a s k 5 0 .                   r e s u l t   =   r p c . c o m p u t e . c o m p u t e . a s y n c ( o p e r a t i o n ,   v a l u e ,   o t h e r ,   e m a i l ) 5 1 .                   r e t u r n   m s g ,   2 0 0 5 3 .   a p p . r u n ( d e b u g = T r u e ) 1 .   ( a p i _ e n v )   $   p y t h o n   a p i . p y   2 .     *   R u n n i n g   o n   h t t p : / / 1 2 7 . 0 . 0 . 1 : 5 0 0 0 /   ( P r e s s   C T R L + C   t o   q u i t )
    s h e l l   访   R a b b i t M Q   N a m e k o     h t t p s : / / n a m e k o . r e a d t h e d o c s . o r g / e n / s t a b l e /   ! v i a :   h t t p : / / b r u n o r o c h a . o r g / p y t h o n / m i c r o s e r v i c e s - w i t h - p y t h o n - r a b b i t m q - a n d - n a m e k o . h t m l :   B r u n o   R o c h a [ 3 ]   :   m r - p i n g [ 4 ]   :   w x y [ 5 ]   L C T T [ 6 ]   L i n u x [ 7 ]   [ 1 ] :   h t t p : / / m a r t i n f o w l e r . c o m / a r t i c l e s / m i c r o s e r v i c e s . h t m l [ 2 ] :   h t t p : / / r a b b i t m q . m r - p i n g . c o m / d e s c r i p t i o n . h t m l [ 3 ] :   h t t p : / / f a c e b o o k . c o m / r o c h a c b r u n o [ 4 ] :   h t t p : / / w w w . m r - p i n g . c o m
[ 5 ] :   h t t p s : / / g i t h u b . c o m / w x y [ 6 ] :   h t t p s : / / g i t h u b . c o m / L C T T / T r a n s l a t e P r o j e c t [ 7 ] :   h t t p s : / / l i n u x . c n /   I D  
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则