1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/leeyi-trest

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 09:40 125a5fb

T-Rest

  • T = Tornado
  • Rest = Restful

Введение

На основе Tornado с использованием asyncio разработана веб-MVC-архитектура для работы с асинхронными запросами.

Зависит от Tornado, SQLAlchemy, pycryptodome, pytz и других библиотек.

Архитектура ПО

tree -I '*svn|*node_module*|*git|py3|*.pyc|__pycache__|statics'
.
├── LICENSE
├── Pipfile
├── README.md
├── applications
│   ├── common
│   │   ├── const.py
│   │   ├── models
│   │   │   └── *.py
│   │   ├── assemblers
│   │   │    └── *.py
│   │   ├── services
│   │   │   └── *.py
│   │   └── utils.py
│   ├── app1
│   │   ├── handlers
│   │   │   └── *.py
│   │   ├── models
│   │   │   └── *.py
│   │   ├── modules.py
│   │   ├── services
│   │   │   └── *.py
│   │   ├── assemblers
│   │   │    └── *.py
│   │   ├── templates
│   │   │   └── */*.html
│   │   └── utils.py
│   └── app2
└── app3
├── configs
│   ├── dev.yaml
│   └── local.yaml
├── datas
│   ├── locales
│   │   ├── en_US.csv
│   │   └── zh_CN.csv
│   ├── menu
│   │   └── menu0.json
│   ├── mysql
│   │   └── *.sql
│   ├── nginx_vhost.conf
│   ├── production_deploy.md
│   ├── supervisor_tornado.conf
│   └── supervisord.conf
├── logs
│   └── *.log
├── server.py
└── tests
    └── *_test.py

Программное обеспечение имеет следующую структуру:

  • .env — файл конфигурации среды, содержащий только один раздел [sys] и одну переменную RUNTIME_ENV.
  • configs — файлы конфигурации приложения:
    • configs/local.yaml — конфигурация для локальной разработки.
    • configs/dev.yaml — конфигурация для разработки.
    • configs/test.yaml — конфигурация для тестирования.
    • configs/product.yaml — конфигурация для производства.
  • applications — код REST API:
    • applications/common/models — слой данных для общих приложений.
    • applications/common/services — сервисный слой для общих приложений, вызывается из контроллеров и отвечает за бизнес-логику.
    • applications/common/assemblers — слой сборщиков для общих приложений, вызываемый из контроллеров для предоставления данных API.
    • applications/common/const.py — константы для общих приложений.
    • applications/common/utils.py — вспомогательные функции для общих приложений.
    • applications/app1 — отдельное приложение.
    • applications/app1/handlers — контроллеры для app1, отвечают за маршрутизацию и проверку параметров.
    • applications/app1/services — сервисы для app1, вызываются из контроллеров, отвечают за бизнес-логику.
    • applications/app1/models — модели данных для app1, вызываемые из сервисов, отвечают за операции с базой данных.
    • applications/app1/assemblers — сборщики для app1, вызываемые из контроллеров, предоставляют данные API.
    • applications/app1/templates — шаблоны для app1, визуализируют данные сервисов.
  • datas — данные:
    • datas/locales — многоязычные данные.
    • datas/json — JSON-файлы.
    • datas/sql — SQL-файлы.
    • *.* — другие данные.
  • logs — файлы журналов.
  • statics — статические ресурсы.
  • tests — тестовые сценарии.
  • server.py — файл запуска проекта.
  • README.md — описание проекта.
  • Pipfile — файл конфигурации pipenv.
  • LICENSE — лицензия на открытый исходный код.
  • .gitignore — файл игнорирования Git.

Установка

Добавьте следующую строку в файл Pipfile в разделе [packages]:

trest = {editable = true,git = "https://gitee.com/leeyi/trest.git",ref = "main"}

Или выполните следующие команды:

pipenv install -e git+https://gitee.com/leeyi/trest.git@main#egg=trest

или

pip install git+https://gitee.com/leeyi/trest.git

Использование

Следуйте инструкциям в демонстрационном проекте:

В корневом каталоге проекта ( ROOT_PATH ) создайте файл server.py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
import resource
resource.setrlimit(resource.RLIMIT_NOFILE, (10240, 9223372036854775807))

from tornado.options import define

abs_file = os.path.abspath(sys.argv[0])
ROOT_PATH = abs_file[:abs_file.rfind('/')]
define('ROOT_PATH', ROOT_PATH)

# Добавить текущий каталог в начало sys.path
sys.path.insert(0, ROOT_PATH)

from trest.webserver import run

if __name__ == "__main__":
    try:
       server = run()
    except KeyboardInterrupt:
        sys.exit(0)

Создайте файл .env в корневом каталоге:

# RUNTIME_ENV не является одним из локальных, dev, test или product
# двоеточие должно иметь пробелы вокруг него
RUNTIME_ENV : local

Запустите:

pipenv install --skip-lock
pipenv shell
python server.py --port=5080
python tests/app_demo/server.py --port=5081

f'{ROOT_PATH}/configs/{env}.yaml' demo

Например, ./tests/app_demo/configs/dev.yaml

Разработка соглашения

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/leeyi-trest.git
git@api.gitlife.ru:oschina-mirror/leeyi-trest.git
oschina-mirror
leeyi-trest
leeyi-trest
main