gunicorn_thrift, 用于gunicorn的Thrift 应用程序和 worker !

分享于 

5分钟阅读

GitHub

  繁體 雙語
Thrift app and workder for gunicorn!
  • 源代码名称:gunicorn_thrift
  • 源代码网址:http://www.github.com/eleme/gunicorn_thrift
  • gunicorn_thrift源代码文档
  • gunicorn_thrift源代码下载
  • Git URL:
    git://www.github.com/eleme/gunicorn_thrift.git
    Git Clone代码到本地:
    git clone http://www.github.com/eleme/gunicorn_thrift
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/eleme/gunicorn_thrift
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    gunicorn_thrift

    Build StatusCoverage Status

    用于gunicorn的Thrift 应用程序和 worker ! 因此,多进程 python Thrift 服务器 !

    为什么?

    • 优雅的重新加载/关闭。
    • 运行时管理工作编号。
    • 还有 gunicorn 所提供的一切。

    支持平台

    • python 2.7,所有工作类
    • python 3.2 +,thriftpy_syncthriftpy_gevent 工作类( 在 python 3上不支持使用 Thrift 工具包生成的代码)

    示例

    使用 thrift

    生成 Thrift 文件:

    % thrift --out tests/pingpong_sdk --gen py:new_style,utf8strings tests/pingpong.thrift

    编写 Thrift 应用程序。

    #!/usr/bin/env python# tests/app.py# -*- coding: utf-8 -*-from pingpong_sdk.pingpong import PingServiceclassPingpongServer(object):
     defping(self):
     if os.environ.get('about_to_shutdown') =='1':
     raise PingService.AboutToShutDownException
     return"pong"app = PingService.Processor(PingpongServer())

    启动应用程序。

    % gunicorn_thrift tests.app:app -k thrift_sync
    % gunicorn_thrift tests.app:app -k thrift_gevent

    使用 thriftpy

    编写 Thrift 应用程序。

    #!/usr/bin/env python# tests/app.py# -*- coding: utf-8 -*-import thriftpyfrom thriftpy.thrift import TProcessorclassPingPongDispatcher(object):
     defping(self):
     return"pong"pingpong_thrift = thriftpy.load("pingpong.thrift")
    app = TProcessor(pingpong_thrift.PingService, PingPongDispatcher())

    启动应用程序。

    % gunicorn_thrift tests.thriftpy_app:app -k thriftpy_sync 
     --thrift-protocol-factory 
     thriftpy.protocol:TCyBinaryProtocolFactory 
     --thrift-transport-factory 
     thriftpy.transport:TCyBufferedTransportFactory

    配置

    员工

    参数:-k--worker-class 配置 file: worker_class 默认值 2.7: thrift_sync 默认 3.2 +: thriftpy_sync

    有 4种类型的员工可用。

    • thrift_sync: 同步工作线程。
    • thrift_gevent: gevent工作线程。
    • thriftpy_sync: 同步工作,适合于 thriftpy 服务
    • thriftpy_gevent: geventworker,适合 thriftpy 服务。

    注:如果要使用 thriftpy_sync 或者 thriftpy_gevent,请确保以下各项:

    • thriftpy的版本应该高于 0.1.10
    • --thrift-protocol-factory 应设置为:
    • thriftpy.protocol:TCyBinaryProtocolFactory 或者
    • thriftpy.protocol:TBinaryProtocolFactory
    • --thrift-transport-factory 应设置为:
    • thriftpy.transport:TCyBufferedTransportFactory 或者
    • thriftpy.transport:TBufferedTransportFactory

    运输工厂

    用于处理连接的传输工厂。

    参数:--thrift-transport-factory
    配置 file: thrift_transport_factory
    默认 2.7: thrift.transport.TTransport:TBufferedTransportFactory
    默认 3.2 +: thriftpy.transport:TBufferedTransportFactory

    协议工厂

    用于解析请求的协议工厂。

    参数:--thrift-protocol-factory
    配置 file: thrift_protocol_factory
    默认 2.7: thrift.protocol.TBinaryProtocol:TBinaryProtocolAcceleratedFactory
    默认 3.2 +: thriftpy.protocol:TBinaryProtocolFactory

    客户端超时

    超时后客户端超时的秒数。

    参数:--thrift-client-timeout
    配置 file: thrift_client_timeout
    默认值:None ( 永远不会超时)

    Gevent检查间隔

    这个配置将运行一个单独的线程来检测每个指定秒的gevent ioloop块。

    参数:--gevent-check-interval
    配置 file: gevent_check_interval
    默认值:0

    注意:如果不运行 gevent worker,不要使用。


    相关文章