15 Commits

4 changed files with 22 additions and 26 deletions

View File

@@ -1,8 +1,10 @@
# namekoplus # namekoplus
[![Upload Python Package](https://github.com/Bryanthelol/namekoplus/actions/workflows/python-publish.yml/badge.svg?event=release)](https://github.com/Bryanthelol/namekoplus/actions/workflows/python-publish.yml)
A lightweight Python distributed microservice solution A lightweight Python distributed microservice solution
## Command Line Tool Usage ## CLI Usage
### Checkout Command ### Checkout Command
@@ -27,5 +29,5 @@ namekoplus init --directory <dir_name> --type <template_type>
See Documents: See Documents:
- [中文](https://doc.bearcatlog.com/) - [English](https://murl.vip/TwML)
- [English](https://legendary-sopapillas-e2626d.netlify.app/) - [中文](https://murl.vip/B0O9)

View File

@@ -116,7 +116,7 @@
"yaxis": { "yaxis": {
"align": false "align": false
} }
} },
% endfor % endfor
], ],
"refresh": "3s", "refresh": "3s",

View File

@@ -1,4 +1,3 @@
import importlib
import inspect import inspect
import os import os
import shutil import shutil
@@ -10,7 +9,6 @@ import shortuuid
from python_on_whales import DockerException, ClientNotFoundError, DockerClient, docker from python_on_whales import DockerException, ClientNotFoundError, DockerClient, docker
from mako.template import Template from mako.template import Template
INIT_TYPE_CHOICES = ['all', 'rpc', 'event', 'http', 'timer', 'demo'] INIT_TYPE_CHOICES = ['all', 'rpc', 'event', 'http', 'timer', 'demo']
MIDDLEWARE_CHOICES = ['rabbitmq', 'metrics'] MIDDLEWARE_CHOICES = ['rabbitmq', 'metrics']
TEST_TYPE_CHOICES = ['unit'] TEST_TYPE_CHOICES = ['unit']
@@ -29,9 +27,10 @@ def check_docker():
click.echo('Please start docker correctly', err=True) click.echo('Please start docker correctly', err=True)
raise raise
if not docker.compose.is_installed(): # TODO 目前在某些系统环境的检查不准确,暂时去除这个检查逻辑
click.echo('Please install docker-compose first', err=True) # if not docker.compose.is_installed():
raise # click.echo('Please install docker-compose first', err=True)
# raise
@contextmanager @contextmanager
@@ -110,7 +109,7 @@ def start_statsd_agent():
def start_statsd_exporter(): def start_statsd_exporter():
with status(f'Starting 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', returned_string = docker.run(image='prom/statsd-exporter:latest', name='statsd-exporter', pull='missing',
detach=True, restart='always', tty=True, hostname='statsd-exporter', detach=True, restart='always', tty=True, hostname='statsd-exporter',
publish=[(9125, 9125, 'udp'), (9102, 9102)], interactive=True, publish=[(9125, 9125, 'udp'), (9102, 9102)], interactive=True,
@@ -137,7 +136,7 @@ def start_grafana():
grafana_conf_dir = os.path.join(get_directory('chassis-agent'), 'metric-configs') 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_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_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.getcwd() + 'grafana_dashboards'
returned_string = docker.run(image='grafana/grafana:latest', name='grafana', hostname='grafana', returned_string = docker.run(image='grafana/grafana:latest', name='grafana', hostname='grafana',
detach=True, restart='always', tty=True, interactive=True, detach=True, restart='always', tty=True, interactive=True,
publish=[(3100, 3000)], pull='missing', publish=[(3100, 3000)], pull='missing',
@@ -159,6 +158,7 @@ def stop_network(network_name):
def start_metric_servers(): def start_metric_servers():
# TODO 检查相应容器是否已启动,如果启动,则先删除
start_network('metric_servers') start_network('metric_servers')
sleep(0.5) sleep(0.5)
start_prometheus() start_prometheus()
@@ -324,10 +324,12 @@ def metric_config_gen(module, class_name_str):
""" """
import sys import sys
from statsd.client.timer import Timer from statsd.client.timer import Timer
sys.path.append(os.getcwd()) sys.path.append(os.getcwd())
for root, dirs, files in os.walk(os.getcwd()):
for _dir in dirs:
sys.path.append(os.path.join(root, _dir))
# Extract information of statsd config from the class of nameko service # Extract information of statsd config from the class of nameko service
dest_dir = module.split('.')[0]
file_name = module.split('.')[-1] file_name = module.split('.')[-1]
_module = __import__(module) _module = __import__(module)

View File

@@ -9,7 +9,7 @@ with open(path.join(here, 'README.md'), encoding='utf-8') as f:
setup( setup(
name='namekoplus', name='namekoplus',
version='0.4.0', version='0.4.14',
description='A lightweight Python distributed microservice solution', description='A lightweight Python distributed microservice solution',
long_description=long_description, long_description=long_description,
long_description_content_type='text/markdown', long_description_content_type='text/markdown',
@@ -50,7 +50,7 @@ setup(
install_requires=[ install_requires=[
'nameko==3.0.0rc11', 'nameko==3.0.0rc11',
'click==8.1.5', 'click==8.1.5',
'python-on-whales==0.63.0', 'python-on-whales==0.64.0',
'pytest==7.4.0', 'pytest==7.4.0',
'mako==1.2.4', 'mako==1.2.4',
'shortuuid==1.0.11' 'shortuuid==1.0.11'
@@ -59,19 +59,11 @@ setup(
'ha': ['tenacity==8.2.2', 'ha': ['tenacity==8.2.2',
'cachetools==5.3.0', 'cachetools==5.3.0',
'circuitbreaker==2.0.0', 'circuitbreaker==2.0.0',
'statsd==4.0.1', 'logstash_formatter==0.5.17'],
'logstash_formatter==0.5.17', 'ob': ['statsd==4.0.1',
'nameko-sentry==1.0.0', 'nameko-sentry==1.0.0',
'nameko-tracer==1.4.0'], 'nameko-tracer==1.4.0'],
'apiflask': ['apiflask>=1.3.1', 'schema': ['marshmallow==3.20.1'],
'gevent>=22.10.2',
'gunicorn==20.1.0'],
'rocketry': ['rocketry==2.4.0'],
'gutter': ['gutter==0.5.0'],
'mysql': ['pymysql==1.0.3',
'sqlalchemy==2.0.15',
'sqlacodegen==2.3.0',
'alembic==1.11.1'],
'security': ['cryptography'], 'security': ['cryptography'],
'dev': ['environs==9.5.0'] 'dev': ['environs==9.5.0']
}, },