mirror of
				https://github.com/Bryanthelol/namekoplus
				synced 2025-10-28 22:16:11 +08:00 
			
		
		
		
	Compare commits
	
		
			28 Commits
		
	
	
		
			v0.4.9
			...
			7ebb99a317
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 7ebb99a317 | |||
| a21146f6b6 | |||
| e05b440933 | |||
| 4358e8514e | |||
| 892dfc6cc0 | |||
| 4377c021d7 | |||
| befe8bd087 | |||
| 02f334e5bb | |||
| 9289bf83ec | |||
| 14068cded1 | |||
| 4cb47e6d3b | |||
| 548817ea1b | |||
| 0b893851ff | |||
| 62e6b1c1ed | |||
| 58804bbe50 | |||
| 1818308508 | |||
| 7866e6cbbf | |||
| a34e1c7d0b | |||
| b6659976fb | |||
| 6c059ac19d | |||
| 3641e7a1fa | |||
| ac50af774d | |||
| 96d33944a4 | |||
| 0fd6949262 | |||
| a8d088f6a3 | |||
| 0a2a382a35 | |||
| e19884b1c0 | |||
| 2f4c5b5d82 | 
							
								
								
									
										53
									
								
								.github/workflows/python-publish.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										53
									
								
								.github/workflows/python-publish.yml
									
									
									
									
										vendored
									
									
								
							| @@ -12,28 +12,41 @@ on: | ||||
|   release: | ||||
|     types: [published] | ||||
|  | ||||
| permissions: | ||||
|   contents: read | ||||
| # permissions: | ||||
| #   contents: read | ||||
|  | ||||
| jobs: | ||||
|   deploy: | ||||
|   # deploy: | ||||
|  | ||||
|   #   runs-on: ubuntu-latest | ||||
|  | ||||
|     # steps: | ||||
|     # - uses: actions/checkout@v3 | ||||
|     # - name: Set up Python | ||||
|     #   uses: actions/setup-python@v3 | ||||
|     #   with: | ||||
|     #     python-version: '3.x' | ||||
|     # - name: Install dependencies | ||||
|     #   run: | | ||||
|     #     python -m pip install --upgrade pip | ||||
|     #     pip install build | ||||
|     # - name: Build package | ||||
|     #   run: python -m build | ||||
|     # - name: Publish package | ||||
|     #   uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29 | ||||
|       # with: | ||||
|       #   user: ${{ secrets.PYPI_API_USER }} | ||||
|       #   password: ${{ secrets.PYPI_API_PASSWORD }} | ||||
|  | ||||
|   pypi-publish: | ||||
|     name: upload release to PyPI | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     permissions: | ||||
|       contents: read | ||||
|     steps: | ||||
|     - uses: actions/checkout@v3 | ||||
|     - name: Set up Python | ||||
|       uses: actions/setup-python@v3 | ||||
|       with: | ||||
|         python-version: '3.x' | ||||
|     - name: Install dependencies | ||||
|       run: | | ||||
|         python -m pip install --upgrade pip | ||||
|         pip install build | ||||
|     - name: Build package | ||||
|       run: python -m build | ||||
|     - name: Publish package | ||||
|       uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29 | ||||
|       with: | ||||
|         user: ${{ secrets.PYPI_API_USER }} | ||||
|         password: ${{ secrets.PYPI_API_PASSWORD }} | ||||
|       - uses: actions/checkout@v3 | ||||
|  | ||||
|       - uses: pdm-project/setup-pdm@v3 | ||||
|  | ||||
|       - name: Publish package distributions to PyPI | ||||
|         run: pdm publish -u ${{ secrets.PYPI_API_USER }} -P ${{ secrets.PYPI_API_PASSWORD }} | ||||
|   | ||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -108,6 +108,8 @@ ipython_config.py | ||||
| #   in version control. | ||||
| #   https://pdm.fming.dev/#use-with-ide | ||||
| .pdm.toml | ||||
| .pdm-python | ||||
| .pdm-build/ | ||||
|  | ||||
| # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm | ||||
| __pypackages__/ | ||||
|   | ||||
							
								
								
									
										11
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								README.md
									
									
									
									
									
								
							| @@ -4,6 +4,13 @@ | ||||
|  | ||||
| A lightweight Python distributed microservice solution | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
| ```shell | ||||
| python3 -m pip install namekoplus | ||||
| ``` | ||||
|  | ||||
|  | ||||
| ## CLI Usage | ||||
|  | ||||
| ### Checkout Command | ||||
| @@ -29,5 +36,5 @@ namekoplus init --directory <dir_name> --type <template_type> | ||||
|  | ||||
| See Documents:  | ||||
|  | ||||
| - [English](https://murl.vip/TwML) | ||||
| - [中文](https://murl.vip/B0O9) | ||||
| - [English](https://legendary-sopapillas-e2626d.netlify.app/) | ||||
| - [中文](https://doc.bearcatlog.com/) | ||||
| @@ -28,15 +28,14 @@ | ||||
|   "links": [], | ||||
|   "liveNow": false, | ||||
|   "panels": [ | ||||
|     % for grafana_dict in grafana_list: | ||||
| % for grafana_dict in grafana_list: | ||||
|     { | ||||
|       "aliasColors": {}, | ||||
|       "bars": false, | ||||
|       "dashLength": 10, | ||||
|       "dashes": false, | ||||
|       "datasource": { | ||||
|         "type": "statsd", | ||||
|         "uid": "5qrwjFCnk" | ||||
|         "type": "statsd" | ||||
|       }, | ||||
|       "fill": 1, | ||||
|       "fillGradient": 0, | ||||
| @@ -47,7 +46,7 @@ | ||||
|         "y": 0 | ||||
|       }, | ||||
|       "hiddenSeries": false, | ||||
|       "id": 5, | ||||
|       "id": ${loop.index}, | ||||
|       "legend": { | ||||
|         "alignAsTable": true, | ||||
|         "avg": true, | ||||
| @@ -92,7 +91,7 @@ | ||||
|       "title": "${service_name} | ${grafana_dict['stat_name']}", | ||||
|       "tooltip": { | ||||
|         "shared": true, | ||||
|         "sort": 0, | ||||
|         "sort": ${loop.index}, | ||||
|         "value_type": "individual" | ||||
|       }, | ||||
|       "type": "graph", | ||||
| @@ -116,8 +115,13 @@ | ||||
|       "yaxis": { | ||||
|         "align": false | ||||
|       } | ||||
|  | ||||
|   % if grafana_dict['is_last'] == 1: | ||||
|     } | ||||
|     % endfor | ||||
|   % else: | ||||
|     }, | ||||
|   % endif | ||||
| % endfor | ||||
|   ], | ||||
|   "refresh": "3s", | ||||
|   "schemaVersion": 36, | ||||
|   | ||||
| @@ -27,9 +27,10 @@ def check_docker(): | ||||
|         click.echo('Please start docker correctly', err=True) | ||||
|         raise | ||||
|  | ||||
|     if not docker.compose.is_installed(): | ||||
|         click.echo('Please install docker-compose first', err=True) | ||||
|         raise | ||||
|     # TODO 目前在某些系统环境的检查不准确,暂时去除这个检查逻辑 | ||||
|     # if not docker.compose.is_installed(): | ||||
|     #     click.echo('Please install docker-compose first', err=True) | ||||
|     #     raise | ||||
|  | ||||
|  | ||||
| @contextmanager | ||||
| @@ -108,7 +109,7 @@ def start_statsd_agent(): | ||||
|  | ||||
| def start_statsd_exporter(): | ||||
|     with status(f'Starting statsd exporter'): | ||||
|         statsd_mapping_file_path = os.path.join('.', 'statsd_mapping.yml') | ||||
|         statsd_mapping_file_path = os.getcwd() + '/statsd_mapping.yml' | ||||
|         returned_string = docker.run(image='prom/statsd-exporter:latest', name='statsd-exporter', pull='missing', | ||||
|                                      detach=True, restart='always', tty=True, hostname='statsd-exporter', | ||||
|                                      publish=[(9125, 9125, 'udp'), (9102, 9102)], interactive=True, | ||||
| @@ -135,7 +136,7 @@ def start_grafana(): | ||||
|         grafana_conf_dir = os.path.join(get_directory('chassis-agent'), 'metric-configs') | ||||
|         grafana_provisioning_path = os.path.join(grafana_conf_dir, 'grafana_conf/provisioning') | ||||
|         grafana_config_path = os.path.join(grafana_conf_dir, 'grafana_conf/config/grafana.ini') | ||||
|         grafana_dashboard_path = os.path.join('.', 'grafana_dashboards') | ||||
|         grafana_dashboard_path = os.path.join(os.getcwd(), 'grafana_dashboards') | ||||
|         returned_string = docker.run(image='grafana/grafana:latest', name='grafana', hostname='grafana', | ||||
|                                      detach=True, restart='always', tty=True, interactive=True, | ||||
|                                      publish=[(3100, 3000)], pull='missing', | ||||
| @@ -366,6 +367,11 @@ def metric_config_gen(module, class_name_str): | ||||
|             for config in config_list: | ||||
|                 if config['class_name'] == class_name: | ||||
|                     grafana_list.append(config) | ||||
|             for idx, grafana_dict in enumerate(grafana_list): | ||||
|                 if idx + 1 == len(grafana_list): | ||||
|                     grafana_dict['is_last'] = 1 | ||||
|                 else: | ||||
|                     grafana_dict['is_last'] = 0 | ||||
|             grafana_configs_dir = os.path.join(get_directory('chassis-agent'), 'metric-configs') | ||||
|             grafana_file_path = os.path.join(grafana_configs_dir, 'grafana.json.mako') | ||||
|             output_file = os.path.join('grafana_dashboards', f'{class_name}_Grafana.json') | ||||
|   | ||||
| @@ -2,7 +2,8 @@ AMQP_URI: pyamqp://${RABBIT_USER:admin}:${RABBIT_PASSWORD:admin}@${RABBIT_HOST:l | ||||
| WEB_SERVER_ADDRESS: '0.0.0.0:8000' | ||||
| RPC_EXCHANGE: 'nameko-rpc' | ||||
|  | ||||
| max_workers: 10 | ||||
| max_workers: 20 | ||||
| PREFETCH_COUNT: 20 | ||||
| parent_calls_tracked: 20 | ||||
|  | ||||
| LOGGING: | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| AMQP_URI: pyamqp://${RABBIT_USER:admin}:${RABBIT_PASSWORD:admin}@${RABBIT_HOST:localhost}:${RABBIT_PORT:5672}/ | ||||
| RPC_EXCHANGE: 'nameko-rpc' | ||||
|  | ||||
| max_workers: 10 | ||||
| max_workers: 20 | ||||
| PREFETCH_COUNT: 20 | ||||
| parent_calls_tracked: 20 | ||||
|   | ||||
| @@ -1,7 +1,8 @@ | ||||
| AMQP_URI: pyamqp://${RABBIT_USER:admin}:${RABBIT_PASSWORD:admin}@${RABBIT_HOST:localhost}:${RABBIT_PORT:5672}/ | ||||
| RPC_EXCHANGE: 'nameko-rpc' | ||||
|  | ||||
| max_workers: 10 | ||||
| max_workers: 20 | ||||
| PREFETCH_COUNT: 20 | ||||
| parent_calls_tracked: 20 | ||||
|  | ||||
| LOGGING: | ||||
|   | ||||
| @@ -2,7 +2,8 @@ AMQP_URI: pyamqp://${RABBIT_USER:admin}:${RABBIT_PASSWORD:admin}@${RABBIT_HOST:l | ||||
| WEB_SERVER_ADDRESS: '0.0.0.0:8000' | ||||
| RPC_EXCHANGE: 'nameko-rpc' | ||||
|  | ||||
| max_workers: 10 | ||||
| max_workers: 20 | ||||
| PREFETCH_COUNT: 20 | ||||
| parent_calls_tracked: 20 | ||||
|  | ||||
| LOGGING: | ||||
|   | ||||
| @@ -1,7 +1,8 @@ | ||||
| AMQP_URI: pyamqp://${RABBIT_USER:admin}:${RABBIT_PASSWORD:admin}@${RABBIT_HOST:localhost}:${RABBIT_PORT:5672}/ | ||||
| RPC_EXCHANGE: 'nameko-rpc' | ||||
|  | ||||
| max_workers: 10 | ||||
| max_workers: 20 | ||||
| PREFETCH_COUNT: 20 | ||||
| parent_calls_tracked: 20 | ||||
|  | ||||
| LOGGING: | ||||
|   | ||||
| @@ -1,7 +1,8 @@ | ||||
| AMQP_URI: pyamqp://${RABBIT_USER:admin}:${RABBIT_PASSWORD:admin}@${RABBIT_HOST:localhost}:${RABBIT_PORT:5672}/ | ||||
| RPC_EXCHANGE: 'nameko-rpc' | ||||
|  | ||||
| max_workers: 10 | ||||
| max_workers: 20 | ||||
| PREFETCH_COUNT: 20 | ||||
| parent_calls_tracked: 20 | ||||
|  | ||||
| LOGGING: | ||||
|   | ||||
							
								
								
									
										71
									
								
								pyproject.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								pyproject.toml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | ||||
|  | ||||
| [project] | ||||
| name = "namekoplus" | ||||
| version = "0.5.2" | ||||
| description = "A lightweight Python distributed microservice solution" | ||||
| keywords = ["lightweight python distributed microservice solution"] | ||||
| readme = "README.md" | ||||
| authors = [ | ||||
|     {name = "Bryant He", email = "bryantsisu@qq.com"}, | ||||
| ] | ||||
| classifiers = [ | ||||
|     "Development Status :: 3 - Alpha", | ||||
|     "Environment :: Web Environment", | ||||
|     "Intended Audience :: Developers", | ||||
|     "License :: OSI Approved :: MIT License", | ||||
|     "Programming Language :: Python :: 3", | ||||
|     "Topic :: Software Development :: Libraries :: Python Modules", | ||||
| ] | ||||
| requires-python = ">=3.8, <4" | ||||
| dependencies = [ | ||||
|     "click==8.1.5", | ||||
|     "mako==1.2.4", | ||||
|     "nameko==3.0.0rc11", | ||||
|     "pytest==7.4.0", | ||||
|     "python-on-whales==0.65.0", | ||||
|     "shortuuid==1.0.11", | ||||
| ] | ||||
| license = {text = "MIT"} | ||||
|  | ||||
| [pypi] | ||||
| url = "https://upload.pypi.org/legacy/" | ||||
|  | ||||
| [project.urls] | ||||
| Homepage = "" | ||||
| "Source Code" = "https://github.com/Bryanthelol/namekoplus" | ||||
| "Bug Tracker" = "https://github.com/Bryanthelol/namekoplus/issues" | ||||
|  | ||||
| [project.optional-dependencies] | ||||
| ha = [ | ||||
|     "cachetools==5.3.0", | ||||
|     "circuitbreaker==2.0.0", | ||||
|     "tenacity==8.2.2", | ||||
| ] | ||||
| ob = [ | ||||
|     "nameko-sentry==1.0.0", | ||||
|     "nameko-tracer==1.4.0", | ||||
| ] | ||||
| log = [ | ||||
|     "logstash_formatter==0.5.17", | ||||
|     "loguru==0.7.2", | ||||
| ] | ||||
| metric = [ | ||||
|     "statsd==4.0.1", | ||||
| ] | ||||
| schema = [ | ||||
|     "marshmallow==3.20.1", | ||||
| ] | ||||
| security = [ | ||||
|     "cryptography", | ||||
| ] | ||||
| dev = [ | ||||
|     "environs==9.5.0", | ||||
|     "python-dotenv==1.0.0", | ||||
| ] | ||||
|  | ||||
| [project.scripts] | ||||
| namekoplus = "namekoplus.command:cli" | ||||
|  | ||||
| [build-system] | ||||
| requires = ["pdm-backend"] | ||||
| build-backend = "pdm.backend" | ||||
							
								
								
									
										70
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										70
									
								
								setup.py
									
									
									
									
									
								
							| @@ -1,70 +0,0 @@ | ||||
| from setuptools import setup, find_packages | ||||
| from codecs import open | ||||
| from os import path | ||||
|  | ||||
| here = path.abspath(path.dirname(__file__)) | ||||
|  | ||||
| with open(path.join(here, 'README.md'), encoding='utf-8') as f: | ||||
|     long_description = f.read() | ||||
|  | ||||
| setup( | ||||
|     name='namekoplus', | ||||
|     version='0.4.9', | ||||
|     description='A lightweight Python distributed microservice solution', | ||||
|     long_description=long_description, | ||||
|     long_description_content_type='text/markdown', | ||||
|     url='', | ||||
|     project_urls={ | ||||
|         'Documentation': 'https://doc.bearcatlog.com/', | ||||
|         'Source Code': 'https://github.com/Bryanthelol/namekoplus', | ||||
|         'Bug Tracker': 'https://github.com/Bryanthelol/namekoplus/issues', | ||||
|     }, | ||||
|     author='Bryant He', | ||||
|     author_email='bryantsisu@qq.com', | ||||
|  | ||||
|     license='MIT', | ||||
|  | ||||
|     classifiers=[ | ||||
|         'Development Status :: 3 - Alpha', | ||||
|         'Environment :: Web Environment', | ||||
|         'Intended Audience :: Developers', | ||||
|         'License :: OSI Approved :: MIT License', | ||||
|         'Programming Language :: Python :: 3', | ||||
|         'Topic :: Software Development :: Libraries :: Python Modules', | ||||
|     ], | ||||
|     platforms='any', | ||||
|     python_requires='>=3.8, <4', | ||||
|  | ||||
|     keywords='lightweight python distributed microservice solution', | ||||
|  | ||||
|     packages=find_packages(exclude=['contrib', 'docs', 'tests']), | ||||
|     include_package_data=True, | ||||
|     data_files=['README.md'], | ||||
|  | ||||
|     entry_points={ | ||||
|         'console_scripts': [ | ||||
|             'namekoplus = namekoplus.command:cli', | ||||
|         ], | ||||
|     }, | ||||
|  | ||||
|     install_requires=[ | ||||
|         'nameko==3.0.0rc11', | ||||
|         'click==8.1.5', | ||||
|         'python-on-whales==0.64.0', | ||||
|         'pytest==7.4.0', | ||||
|         'mako==1.2.4', | ||||
|         'shortuuid==1.0.11' | ||||
|     ], | ||||
|     extras_require={ | ||||
|         'ha': ['tenacity==8.2.2', | ||||
|                'cachetools==5.3.0', | ||||
|                'circuitbreaker==2.0.0', | ||||
|                'logstash_formatter==0.5.17'], | ||||
|         'ob': ['statsd==4.0.1', | ||||
|                'nameko-sentry==1.0.0', | ||||
|                'nameko-tracer==1.4.0'], | ||||
|         'schema': ['marshmallow==3.20.1'], | ||||
|         'security': ['cryptography'], | ||||
|         'dev': ['environs==9.5.0'] | ||||
|     }, | ||||
| ) | ||||
		Reference in New Issue
	
	Block a user