mirror of
https://github.com/Bryanthelol/namekoplus
synced 2025-06-08 04:40:43 +08:00
Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
850437db3d | |||
7ebb99a317 | |||
a21146f6b6 | |||
e05b440933 | |||
4358e8514e | |||
892dfc6cc0 | |||
4377c021d7 | |||
befe8bd087 | |||
02f334e5bb | |||
9289bf83ec | |||
14068cded1 | |||
4cb47e6d3b | |||
548817ea1b | |||
0b893851ff | |||
62e6b1c1ed | |||
58804bbe50 | |||
1818308508 | |||
7866e6cbbf | |||
a34e1c7d0b | |||
b6659976fb | |||
6c059ac19d |
51
.github/workflows/python-publish.yml
vendored
51
.github/workflows/python-publish.yml
vendored
@ -12,28 +12,41 @@ on:
|
|||||||
release:
|
release:
|
||||||
types: [published]
|
types: [published]
|
||||||
|
|
||||||
permissions:
|
# permissions:
|
||||||
contents: read
|
# contents: read
|
||||||
|
|
||||||
jobs:
|
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
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: Set up Python
|
|
||||||
uses: actions/setup-python@v3
|
- uses: pdm-project/setup-pdm@v3
|
||||||
with:
|
|
||||||
python-version: '3.x'
|
- name: Publish package distributions to PyPI
|
||||||
- name: Install dependencies
|
run: pdm publish -u ${{ secrets.PYPI_API_USER }} -P ${{ secrets.PYPI_API_PASSWORD }}
|
||||||
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 }}
|
|
||||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -108,6 +108,8 @@ ipython_config.py
|
|||||||
# in version control.
|
# in version control.
|
||||||
# https://pdm.fming.dev/#use-with-ide
|
# https://pdm.fming.dev/#use-with-ide
|
||||||
.pdm.toml
|
.pdm.toml
|
||||||
|
.pdm-python
|
||||||
|
.pdm-build/
|
||||||
|
|
||||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||||
__pypackages__/
|
__pypackages__/
|
||||||
|
11
README.md
11
README.md
@ -4,6 +4,13 @@
|
|||||||
|
|
||||||
A lightweight Python distributed microservice solution
|
A lightweight Python distributed microservice solution
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```shell
|
||||||
|
python3 -m pip install namekoplus
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## CLI Usage
|
## CLI Usage
|
||||||
|
|
||||||
### Checkout Command
|
### Checkout Command
|
||||||
@ -29,5 +36,5 @@ namekoplus init --directory <dir_name> --type <template_type>
|
|||||||
|
|
||||||
See Documents:
|
See Documents:
|
||||||
|
|
||||||
- [English](https://murl.vip/TwML)
|
- [English](https://legendary-sopapillas-e2626d.netlify.app/)
|
||||||
- [中文](https://murl.vip/B0O9)
|
- [中文](https://doc.bearcatlog.com/)
|
@ -1 +0,0 @@
|
|||||||
from namekoplus.chassis.chassis import *
|
|
68
pyproject.toml
Normal file
68
pyproject.toml
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
|
||||||
|
[project]
|
||||||
|
name = "namekoplus"
|
||||||
|
version = "0.5.3"
|
||||||
|
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"}
|
||||||
|
|
||||||
|
[project.urls]
|
||||||
|
"Homepage" = "https://github.com/Bryanthelol/namekoplus"
|
||||||
|
"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.16',
|
|
||||||
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']
|
|
||||||
},
|
|
||||||
)
|
|
1
src/namekoplus/__init__.py
Normal file
1
src/namekoplus/__init__.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
from .chassis.chassis import *
|
@ -28,14 +28,14 @@
|
|||||||
"links": [],
|
"links": [],
|
||||||
"liveNow": false,
|
"liveNow": false,
|
||||||
"panels": [
|
"panels": [
|
||||||
% for grafana_dict in grafana_list:
|
% for grafana_dict in grafana_list:
|
||||||
{
|
{
|
||||||
"aliasColors": {},
|
"aliasColors": {},
|
||||||
"bars": false,
|
"bars": false,
|
||||||
"dashLength": 10,
|
"dashLength": 10,
|
||||||
"dashes": false,
|
"dashes": false,
|
||||||
"datasource": {
|
"datasource": {
|
||||||
"type": "statsd",
|
"type": "statsd"
|
||||||
},
|
},
|
||||||
"fill": 1,
|
"fill": 1,
|
||||||
"fillGradient": 0,
|
"fillGradient": 0,
|
||||||
@ -115,12 +115,13 @@
|
|||||||
"yaxis": {
|
"yaxis": {
|
||||||
"align": false
|
"align": false
|
||||||
}
|
}
|
||||||
% if ${loop.index} == len(grafana_list):
|
|
||||||
|
% if grafana_dict['is_last'] == 1:
|
||||||
}
|
}
|
||||||
% else:
|
% else:
|
||||||
},
|
},
|
||||||
% endif
|
% endif
|
||||||
% endfor
|
% endfor
|
||||||
],
|
],
|
||||||
"refresh": "3s",
|
"refresh": "3s",
|
||||||
"schemaVersion": 36,
|
"schemaVersion": 36,
|
@ -367,6 +367,11 @@ def metric_config_gen(module, class_name_str):
|
|||||||
for config in config_list:
|
for config in config_list:
|
||||||
if config['class_name'] == class_name:
|
if config['class_name'] == class_name:
|
||||||
grafana_list.append(config)
|
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_configs_dir = os.path.join(get_directory('chassis-agent'), 'metric-configs')
|
||||||
grafana_file_path = os.path.join(grafana_configs_dir, 'grafana.json.mako')
|
grafana_file_path = os.path.join(grafana_configs_dir, 'grafana.json.mako')
|
||||||
output_file = os.path.join('grafana_dashboards', f'{class_name}_Grafana.json')
|
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'
|
WEB_SERVER_ADDRESS: '0.0.0.0:8000'
|
||||||
RPC_EXCHANGE: 'nameko-rpc'
|
RPC_EXCHANGE: 'nameko-rpc'
|
||||||
|
|
||||||
max_workers: 10
|
max_workers: 20
|
||||||
|
PREFETCH_COUNT: 20
|
||||||
parent_calls_tracked: 20
|
parent_calls_tracked: 20
|
||||||
|
|
||||||
LOGGING:
|
LOGGING:
|
@ -1,5 +1,6 @@
|
|||||||
AMQP_URI: pyamqp://${RABBIT_USER:admin}:${RABBIT_PASSWORD:admin}@${RABBIT_HOST:localhost}:${RABBIT_PORT:5672}/
|
AMQP_URI: pyamqp://${RABBIT_USER:admin}:${RABBIT_PASSWORD:admin}@${RABBIT_HOST:localhost}:${RABBIT_PORT:5672}/
|
||||||
RPC_EXCHANGE: 'nameko-rpc'
|
RPC_EXCHANGE: 'nameko-rpc'
|
||||||
|
|
||||||
max_workers: 10
|
max_workers: 20
|
||||||
|
PREFETCH_COUNT: 20
|
||||||
parent_calls_tracked: 20
|
parent_calls_tracked: 20
|
@ -1,7 +1,8 @@
|
|||||||
AMQP_URI: pyamqp://${RABBIT_USER:admin}:${RABBIT_PASSWORD:admin}@${RABBIT_HOST:localhost}:${RABBIT_PORT:5672}/
|
AMQP_URI: pyamqp://${RABBIT_USER:admin}:${RABBIT_PASSWORD:admin}@${RABBIT_HOST:localhost}:${RABBIT_PORT:5672}/
|
||||||
RPC_EXCHANGE: 'nameko-rpc'
|
RPC_EXCHANGE: 'nameko-rpc'
|
||||||
|
|
||||||
max_workers: 10
|
max_workers: 20
|
||||||
|
PREFETCH_COUNT: 20
|
||||||
parent_calls_tracked: 20
|
parent_calls_tracked: 20
|
||||||
|
|
||||||
LOGGING:
|
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'
|
WEB_SERVER_ADDRESS: '0.0.0.0:8000'
|
||||||
RPC_EXCHANGE: 'nameko-rpc'
|
RPC_EXCHANGE: 'nameko-rpc'
|
||||||
|
|
||||||
max_workers: 10
|
max_workers: 20
|
||||||
|
PREFETCH_COUNT: 20
|
||||||
parent_calls_tracked: 20
|
parent_calls_tracked: 20
|
||||||
|
|
||||||
LOGGING:
|
LOGGING:
|
@ -1,7 +1,8 @@
|
|||||||
AMQP_URI: pyamqp://${RABBIT_USER:admin}:${RABBIT_PASSWORD:admin}@${RABBIT_HOST:localhost}:${RABBIT_PORT:5672}/
|
AMQP_URI: pyamqp://${RABBIT_USER:admin}:${RABBIT_PASSWORD:admin}@${RABBIT_HOST:localhost}:${RABBIT_PORT:5672}/
|
||||||
RPC_EXCHANGE: 'nameko-rpc'
|
RPC_EXCHANGE: 'nameko-rpc'
|
||||||
|
|
||||||
max_workers: 10
|
max_workers: 20
|
||||||
|
PREFETCH_COUNT: 20
|
||||||
parent_calls_tracked: 20
|
parent_calls_tracked: 20
|
||||||
|
|
||||||
LOGGING:
|
LOGGING:
|
@ -1,7 +1,8 @@
|
|||||||
AMQP_URI: pyamqp://${RABBIT_USER:admin}:${RABBIT_PASSWORD:admin}@${RABBIT_HOST:localhost}:${RABBIT_PORT:5672}/
|
AMQP_URI: pyamqp://${RABBIT_USER:admin}:${RABBIT_PASSWORD:admin}@${RABBIT_HOST:localhost}:${RABBIT_PORT:5672}/
|
||||||
RPC_EXCHANGE: 'nameko-rpc'
|
RPC_EXCHANGE: 'nameko-rpc'
|
||||||
|
|
||||||
max_workers: 10
|
max_workers: 20
|
||||||
|
PREFETCH_COUNT: 20
|
||||||
parent_calls_tracked: 20
|
parent_calls_tracked: 20
|
||||||
|
|
||||||
LOGGING:
|
LOGGING:
|
0
tests/__init__.py
Normal file
0
tests/__init__.py
Normal file
Loading…
x
Reference in New Issue
Block a user