Apache ShenYu Client SDK for python.

Clone this repo:
  1. 87e0c99 ci action (#15) by dengliming · 3 months ago main
  2. c79cce6 Update .asf.yaml (#14) by Zhang Yonglun · 3 months ago
  3. 8631ec8 [chore #12] Modify example and readme and package name (#13) by mutianzero · 5 months ago
  4. 3fcefa0 Delete .gitignore (#11) by mutianzero · 5 months ago
  5. f4a87e8 Delete gateway_proxy directory (#10) by mutianzero · 6 months ago

Apache-ShenYu-Client

Build and Test codecov.io

Apache-Shenyu-Client for python client allows you to access ShenYu Gateway, it supports registry python service to ShenYu Gateway.

Requirements

  • python3.6+
  • ShenYu2.4.3+

Install

pip3 install Apache-ShenYu-Client -i https://pypi.python.org/simple

Usage

Use the decorator

import package:      

from apache_shenyu_client.config import GatewayConfig
from apache_shenyu_client.register import register_uri, register_metadata, register_all_metadata

First, modify the configuration according to the project situation, If you do not configure it, you will not be able to use apache_shenyu_client.

  • Configure shenyu gateway services and port
GatewayConfig.test = {
        "servers": "xx.xx.xx.xx",
        "port": 1001
    }
  • Configure python services information
GatewayConfig.uri = {
        "app_name": "app2",             # app name
        "host": "172.24.43.28",         # python service host
        "port": 8000,                   # python service port
        "context_path": "/flask_test",   # context_path
        "environment": "test",          # environment
        "rpc_type": "http"              # rpc type
    }
  • Configure to get administrator token
GatewayConfig.register = {
        "register_type": "http",
        "servers": "xx.xx.xx.xx",
        "props": {
            "username": "admin",
            "password": "123456"
        }
    }
  • Proxy all api

    • Using a decorator at the entry of a service request to register for this service: @register_uri
    • Using a decorator at the entry of a service request: @register_all_metadata(register_all=True)
  • Proxy some api

    • Using a decorator at the entry of a service request to register for this service: @register_uri
    • Use a decorator on that api definition: @register_metadata,need param: path, as follows 3.1.2.3:
    • This is a python flask service api, path is “/search”
      @user.route('/search', methods=['GET'])
      def user_search_handler():
          data = UserBusiness.search_by_nickname()
          return json_detail_render(0, data)`
      
      proxy:
      @register_metadata("/search")
      @user.route('/search', methods=['GET'])
      def user_search_handler():
          data = UserBusiness.search_by_nickname()
          return json_detail_render(0, data)
      
      

Function call usage

import package

from apache_shenyu_client.config import GatewayConfig
from apache_shenyu_client.api import GatewayProxy
gt = GatewayProxy()
  • Modify the configuration according to the project situation
GatewayConfig.uri = {
        "app_name": "app2",            # app name
        "host": "172.24.43.28",        # python service host
        "port": 8000,                  # python service port
        "context_path": "/flask_test",  # context_path
        "environment": "test",         # environment
        "rpc_type": "http"             # rpc type
    }
  • Register uri

    gt.register_uri() and "/helloqq2" is the path to register

    • register some path:
      gt.register_metadata("/helloqq2")
      
    • register all path:
      gt.register_metadata(register_all=True)