Project setup and ideas

This commit is contained in:
Johan B.W. de Vries 2023-04-10 12:51:27 +02:00
parent 0b869ff3ea
commit 2d079531ab
10 changed files with 107 additions and 0 deletions

6
ARCHITECTURE.md Normal file
View File

@ -0,0 +1,6 @@
Controller (master)
Worker (minion)
API

19
Makefile Normal file
View File

@ -0,0 +1,19 @@
run-controller:
venv/bin/mypy --strict phasmplatform
venv/bin/pyflakes phasmplatform
venv/bin/pycodestyle phasmplatform
# venv/bin/python
init:
docker compose up -d
redis-sh:
docker compose exec -it redis redis-cli
setup:
python3.10 -m venv venv
venv/bin/pip install --upgrade pip wheel setuptools
venv/bin/pip install -r requirements.txt -r requirements-dev.txt
update:
venv/bin/pip install -r requirements.txt -r requirements-dev.txt

View File

@ -1,2 +1,8 @@
# phasm-platform # phasm-platform
## Steps
```sh
make setup
make init
make run-controller
```

7
config.toml Normal file
View File

@ -0,0 +1,7 @@
[controller.redis.write]
host = 'localhost'
port = 17859
[controller.redis.read]
host = 'localhost'
port = 17859

5
docker-compose.yaml Normal file
View File

@ -0,0 +1,5 @@
services:
redis:
image: 'redis:7.0-alpine'
ports:
- '17859:6379'

View File

View File

View File

@ -0,0 +1,58 @@
from typing import TYPE_CHECKING, BinaryIO
import redis
if TYPE_CHECKING:
import tomli as tomllib
else:
try:
import tomllib
except ImportError:
import tomli as tomllib
class ControllerConfig:
__slots__ = ('redis_read', 'redis_write', )
redis_read: 'redis.Redis[bytes]' # Set decode_responses to False
redis_write: 'redis.Redis[bytes]' # Set decode_responses to False
def __init__(
self,
redis_read: 'redis.Redis[bytes]',
redis_write: 'redis.Redis[bytes]',
) -> None:
self.redis_read = redis_read
self.redis_write = redis_write
class Config:
__slots__ = ('controller_config', )
controller_config: ControllerConfig
def __init__(self, controller_config: ControllerConfig) -> None:
self.controller_config = controller_config
def from_toml(toml: BinaryIO) -> Config:
"""
Loads the given toml and builds a config instance out of it
"""
toml_dict = tomllib.load(toml)
redis_read = redis.Redis(
host=toml_dict['redis_read_host'],
port=toml_dict['redis_read_port'],
decode_responses=False,
)
redis_write = redis.Redis(
host=toml_dict['redis_write_host'],
port=toml_dict['redis_write_port'],
decode_responses=False,
)
controller_config = ControllerConfig(redis_read, redis_write)
return Config(controller_config)

4
requirements-dev.txt Normal file
View File

@ -0,0 +1,4 @@
mypy==1.2.0
pycodestyle==2.10.0
pyflakes==3.0.1
types-redis==4.5.4.1

2
requirements.txt Normal file
View File

@ -0,0 +1,2 @@
redis==4.5.4
tomli==2.0.1 ; python_version < '3.11'