Install gunicorn

This commit is contained in:
2026-01-09 14:45:36 +01:00
parent ee7b6cc02c
commit b9e08735a8
5 changed files with 38 additions and 10 deletions

View File

@@ -1,16 +1,22 @@
import os
import click
import subprocess
import conmorfeusz.web as web
import conmorfeusz.concraft as ccpl
from conmorfeusz.web import create_app
from conmorfeusz.server import StandaloneApplication
@click.command()
@click.option('--port', default=5000, help='Port on which the application will be listening to.')
@click.option('--ccpl-port', default=3000, help='Port on which internal concraft-pl server will be listening to.')
@click.option("--host", default="0.0.0.0", help='Default host on which the application will be listening on.')
@click.option('--port', default=5000, help='Port which the application will be listening on.')
@click.option("--workers", default=4, help='Number of workers used to handle incoming requests.')
@click.option('--ccpl-port', default=3000, help='Port which internal concraft-pl server will be listening on.')
@click.option('--ccpl-model', default=None, help='Model used by concraft-pl. It will fallback to CONCRAFT_PL_MODEL envvar if not specified.')
@click.option('--ccpl-bin', default=None, help='Concraft-pl binary file. It will fallback to CONCRAFT_PL_BIN envvar if not specified.')
@click.option('--ccpl-core-num', default=1, help='Number of cores used to run Concraft-pl logic.')
@click.option('--ccpl-alloc-size', default=64, help='Allocation size for Concraft-pl.')
def run(port, ccpl_port, ccpl_model, ccpl_bin, ccpl_core_num, ccpl_alloc_size):
def run(host, port, workers, ccpl_port, ccpl_model, ccpl_bin, ccpl_core_num, ccpl_alloc_size):
"""
Glues all services together and starts the holistic app.
"""
@@ -27,4 +33,10 @@ def run(port, ccpl_port, ccpl_model, ccpl_bin, ccpl_core_num, ccpl_alloc_size):
concraft_cfg = (ccpl_model, ccpl_bin, ccpl_port, ccpl_core_num, ccpl_alloc_size)
with ccpl.start_server(*concraft_cfg):
web.start(port)
options = {
'bind': f'{host}:{port}',
'workers': workers,
}
StandaloneApplication(create_app, options).run()

View File

@@ -0,0 +1,15 @@
from gunicorn.app.base import BaseApplication
class StandaloneApplication(BaseApplication):
def __init__(self, app_factory, options=None):
self.options = options or {}
self.app_factory = app_factory
super().__init__()
def load_config(self):
for key, value in self.options.items():
if key in self.cfg.settings and value is not None:
self.cfg.set(key.lower(), value)
def load(self):
return self.app_factory()

View File

@@ -1,5 +1,5 @@
from flask import Flask
from conmorfeusz.web import analyzer
from . import analyzer
def create_app():
app = Flask(__name__, instance_relative_config=True)

View File

@@ -1,13 +1,12 @@
{
self,
system,
pkgs,
fetchurl,
libgcc,
stdenv,
autoPatchelfHook,
makeWrapper,
defaultModel ? self.packages.${system}.concraft-pl-sgjp-model,
defaultModel ? self.packages.${stdenv.hostPlatform.system}.concraft-pl-sgjp-model,
...
}: let
python = pkgs.python311; # Możesz zmienić wersję Python
@@ -49,6 +48,7 @@ in
flask
requests
click
gunicorn
];
nativeBuildInputs = with pythonPackages; [
@@ -60,6 +60,6 @@ in
postInstall = ''
wrapProgram $out/bin/conmorfeusz \
--set CONCRAFT_PL_MODEL "${defaultModel}" \
--set CONCRAFT_PL_BIN "${self.packages.${system}.concraft-pl}/bin/concraft-pl"
--set CONCRAFT_PL_BIN "${self.packages.${stdenv.hostPlatform.system}.concraft-pl}/bin/concraft-pl"
'';
}

View File

@@ -12,7 +12,8 @@ dependencies = [
"morfeusz2==1.99.12",
"flask",
"requests",
"click"
"click",
"gunicorn>=21.0.0"
]
[tool.setuptools.packages.find]