django 使用thrift

近期在做Django 微服务架构开发 就使用了 django-thrift 在使用的过程中运行thrift服务时总是报错,查看源码发现 django-thrift是便利所有app的views文件并映射为thrift服务,但是我们的django工厂中总会包含以下第三方app或服务,则不能确保都会有views文件,所以运行 python manager.py runrpcserver时会报错 无法加载模块 查看源码发现问题出现在create_processor()方法

def create_processor():
    """Creates a Gunicorn Thrift compatible TProcessor"""
    service = getattr(THRIFT_MODULE, settings.THRIFT["SERVICE"])

    for app in [x for x in settings.INSTALLED_APPS if not x.startswith("django")]:
        importlib.import_module("%s.views" % app)

    return TProcessor(service, create_handler())

果断修改

def create_processor():
    """Creates a Gunicorn Thrift compatible TProcessor"""
    service = getattr(THRIFT_MODULE, settings.THRIFT["SERVICE"])

    for app in [x for x in settings.RPC_APPS if not x.startswith("django")]:
        importlib.import_module("%s.views.rpcviews" % app)

    return TProcessor(service, create_handler())

继续运行 OK

这样只有使用thrift的APP 才启动thrift服务,切远程过程要写到APP views目录中的rpcviews文件中

文档信息

版权声明:可自由转载(请注明转载出处)-非商用-非衍生

发表时间:2019年5月24日 17:33