Switch from uvicorn to gunicorn
This commit is contained in:
parent
0787a6e10f
commit
59f2add67f
7 changed files with 86 additions and 164 deletions
|
|
@ -30,7 +30,6 @@ python.mkDerivation {
|
||||||
djangocms-video
|
djangocms-video
|
||||||
easy-thumbnails
|
easy-thumbnails
|
||||||
setuptools
|
setuptools
|
||||||
uvicorn
|
gunicorn
|
||||||
uvloop
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ in
|
||||||
User = "strojnadzor";
|
User = "strojnadzor";
|
||||||
Group = "strojnadzor";
|
Group = "strojnadzor";
|
||||||
ExecStartPre = "${strojnadzor}/bin/strojnadzor-admin migrate";
|
ExecStartPre = "${strojnadzor}/bin/strojnadzor-admin migrate";
|
||||||
ExecStart = "${strojnadzor}/bin/strojnadzor-admin runserver-uvicorn ${cfg.hostname} ${toString cfg.port}";
|
ExecStart = "${strojnadzor}/bin/strojnadzor-admin runserver-gunicorn --bind ${cfg.hostname}:${toString cfg.port}";
|
||||||
};
|
};
|
||||||
environment.STROJNADZOR_DATA_DIR = "${cfg.stateDir}/data";
|
environment.STROJNADZOR_DATA_DIR = "${cfg.stateDir}/data";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
160
requirements.nix
160
requirements.nix
|
|
@ -179,23 +179,6 @@ let
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
"click" = python.mkDerivation {
|
|
||||||
name = "click-7.0";
|
|
||||||
src = pkgs.fetchurl {
|
|
||||||
url = "https://files.pythonhosted.org/packages/f8/5c/f60e9d8a1e77005f664b76ff8aeaee5bc05d0a91798afd7f53fc998dbc47/Click-7.0.tar.gz";
|
|
||||||
sha256 = "5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7";
|
|
||||||
};
|
|
||||||
doCheck = commonDoCheck;
|
|
||||||
format = "setuptools";
|
|
||||||
buildInputs = commonBuildInputs ++ [ ];
|
|
||||||
propagatedBuildInputs = [ ];
|
|
||||||
meta = with pkgs.stdenv.lib; {
|
|
||||||
homepage = "https://palletsprojects.com/p/click/";
|
|
||||||
license = licenses.bsdOriginal;
|
|
||||||
description = "Composable command line interface toolkit";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
"cssselect" = python.mkDerivation {
|
"cssselect" = python.mkDerivation {
|
||||||
name = "cssselect-1.1.0";
|
name = "cssselect-1.1.0";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
|
|
@ -354,10 +337,10 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
"django-filer" = python.mkDerivation {
|
"django-filer" = python.mkDerivation {
|
||||||
name = "django-filer-1.6.0";
|
name = "django-filer-1.7.0";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
url = "https://files.pythonhosted.org/packages/b2/3b/544c7de7ae9b2e28f1387974aba3b4385fc06b083c8e6c25c2203afe9255/django-filer-1.6.0.tar.gz";
|
url = "https://files.pythonhosted.org/packages/89/1b/137aead15fe0b39589d2628bae035a8b58caecd4e7b028262168d47a56b1/django-filer-1.7.0.tar.gz";
|
||||||
sha256 = "3f2045cfd9e53c1a29cd8a71747e984faead630ee72baab29d6b3b45584d52e0";
|
sha256 = "3da256ab69edc0daed0ccc9a7de37d0548b16037d57684b5524ec34cf3e203fe";
|
||||||
};
|
};
|
||||||
doCheck = commonDoCheck;
|
doCheck = commonDoCheck;
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
@ -367,6 +350,7 @@ let
|
||||||
self."django-mptt"
|
self."django-mptt"
|
||||||
self."django-polymorphic"
|
self."django-polymorphic"
|
||||||
self."easy-thumbnails"
|
self."easy-thumbnails"
|
||||||
|
self."six"
|
||||||
self."unidecode"
|
self."unidecode"
|
||||||
];
|
];
|
||||||
meta = with pkgs.stdenv.lib; {
|
meta = with pkgs.stdenv.lib; {
|
||||||
|
|
@ -433,10 +417,10 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
"django-polymorphic" = python.mkDerivation {
|
"django-polymorphic" = python.mkDerivation {
|
||||||
name = "django-polymorphic-2.0.3";
|
name = "django-polymorphic-2.1.2";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
url = "https://files.pythonhosted.org/packages/ae/d6/bebbc990b5856c36603cd0d635e93137fdf67ec04386ac1bdc87707f9613/django-polymorphic-2.0.3.tar.gz";
|
url = "https://files.pythonhosted.org/packages/ad/52/3af2ee7283625a4e6df37a8a4a8fafbc3b6821f670a1c496191cfa7cde6d/django-polymorphic-2.1.2.tar.gz";
|
||||||
sha256 = "1fb5505537bcaf71cfc951ff94c4e3ba83c761eaca04b7b2ce9cb63937634ea5";
|
sha256 = "6e08a76c91066635ccb7ef3ebbe9a0ad149febae6b30be2579716ec16d3c6461";
|
||||||
};
|
};
|
||||||
doCheck = commonDoCheck;
|
doCheck = commonDoCheck;
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
@ -854,20 +838,22 @@ let
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
"h11" = python.mkDerivation {
|
"gunicorn" = python.mkDerivation {
|
||||||
name = "h11-0.9.0";
|
name = "gunicorn-20.0.4";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
url = "https://files.pythonhosted.org/packages/34/5a/abaa557d20b210117d8c3e6b0b817ce9b329b2e81f87612e60102a924323/h11-0.9.0.tar.gz";
|
url = "https://files.pythonhosted.org/packages/33/b8/f5fd32e1f46fcfefd7cb5c84dee1cf657ab3540ee92b8a09fc40e4887bf0/gunicorn-20.0.4.tar.gz";
|
||||||
sha256 = "33d4bca7be0fa039f4e84d50ab00531047e53d6ee8ffbc83501ea602c169cae1";
|
sha256 = "1904bb2b8a43658807108d59c3f3d56c2b6121a701161de0ddf9ad140073c626";
|
||||||
};
|
};
|
||||||
doCheck = commonDoCheck;
|
doCheck = commonDoCheck;
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
buildInputs = commonBuildInputs ++ [ ];
|
buildInputs = commonBuildInputs ++ [ ];
|
||||||
propagatedBuildInputs = [ ];
|
propagatedBuildInputs = [
|
||||||
|
self."setuptools"
|
||||||
|
];
|
||||||
meta = with pkgs.stdenv.lib; {
|
meta = with pkgs.stdenv.lib; {
|
||||||
homepage = "https://github.com/python-hyper/h11";
|
homepage = "http://gunicorn.org";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1";
|
description = "WSGI HTTP Server for UNIX";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -891,28 +877,11 @@ let
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
"httptools" = python.mkDerivation {
|
|
||||||
name = "httptools-0.0.13";
|
|
||||||
src = pkgs.fetchurl {
|
|
||||||
url = "https://files.pythonhosted.org/packages/1b/03/215969db11abe8741e9c266a4cbe803a372bd86dd35fa0084c4df6d4bd00/httptools-0.0.13.tar.gz";
|
|
||||||
sha256 = "e00cbd7ba01ff748e494248183abc6e153f49181169d8a3d41bb49132ca01dfc";
|
|
||||||
};
|
|
||||||
doCheck = commonDoCheck;
|
|
||||||
format = "setuptools";
|
|
||||||
buildInputs = commonBuildInputs ++ [ ];
|
|
||||||
propagatedBuildInputs = [ ];
|
|
||||||
meta = with pkgs.stdenv.lib; {
|
|
||||||
homepage = "https://github.com/MagicStack/httptools";
|
|
||||||
license = licenses.mit;
|
|
||||||
description = "A collection of framework independent HTTP protocol utils.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
"idna" = python.mkDerivation {
|
"idna" = python.mkDerivation {
|
||||||
name = "idna-2.8";
|
name = "idna-2.9";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
url = "https://files.pythonhosted.org/packages/ad/13/eb56951b6f7950cadb579ca166e448ba77f9d24efc03edd7e55fa57d04b7/idna-2.8.tar.gz";
|
url = "https://files.pythonhosted.org/packages/cb/19/57503b5de719ee45e83472f339f617b0c01ad75cba44aba1e4c97c2b0abd/idna-2.9.tar.gz";
|
||||||
sha256 = "c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407";
|
sha256 = "7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb";
|
||||||
};
|
};
|
||||||
doCheck = commonDoCheck;
|
doCheck = commonDoCheck;
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
@ -1037,10 +1006,10 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
"requests" = python.mkDerivation {
|
"requests" = python.mkDerivation {
|
||||||
name = "requests-2.22.0";
|
name = "requests-2.23.0";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
url = "https://files.pythonhosted.org/packages/01/62/ddcf76d1d19885e8579acb1b1df26a852b03472c0e46d2b959a714c90608/requests-2.22.0.tar.gz";
|
url = "https://files.pythonhosted.org/packages/f5/4f/280162d4bd4d8aad241a21aecff7a6e46891b905a4341e7ab549ebaf7915/requests-2.23.0.tar.gz";
|
||||||
sha256 = "11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4";
|
sha256 = "b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6";
|
||||||
};
|
};
|
||||||
doCheck = commonDoCheck;
|
doCheck = commonDoCheck;
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
@ -1052,17 +1021,17 @@ let
|
||||||
self."urllib3"
|
self."urllib3"
|
||||||
];
|
];
|
||||||
meta = with pkgs.stdenv.lib; {
|
meta = with pkgs.stdenv.lib; {
|
||||||
homepage = "http://python-requests.org";
|
homepage = "https://requests.readthedocs.io";
|
||||||
license = licenses.asl20;
|
license = licenses.asl20;
|
||||||
description = "Python HTTP for Humans.";
|
description = "Python HTTP for Humans.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
"setuptools" = python.mkDerivation {
|
"setuptools" = python.mkDerivation {
|
||||||
name = "setuptools-45.1.0";
|
name = "setuptools-46.0.0";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
url = "https://files.pythonhosted.org/packages/42/3e/2464120172859e5d103e5500315fb5555b1e908c0dacc73d80d35a9480ca/setuptools-45.1.0.zip";
|
url = "https://files.pythonhosted.org/packages/df/ed/bea598a87a8f7e21ac5bbf464102077c7102557c07db9ff4e207bd9f7806/setuptools-46.0.0.zip";
|
||||||
sha256 = "91f72d83602a6e5e4a9e4fe296e27185854038d7cbda49dcd7006c4d3b3b89d5";
|
sha256 = "2f00f25b780fbfd0787e46891dcccd805b08d007621f24629025f48afef444b5";
|
||||||
};
|
};
|
||||||
doCheck = commonDoCheck;
|
doCheck = commonDoCheck;
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
@ -1076,10 +1045,10 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
"setuptools-scm" = python.mkDerivation {
|
"setuptools-scm" = python.mkDerivation {
|
||||||
name = "setuptools-scm-3.4.3";
|
name = "setuptools-scm-3.5.0";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
url = "https://files.pythonhosted.org/packages/fe/bd/bc2fe0b14ce234bb5e2af5f3b574c5a8ef1b7845bfa41e7cf69a78627ec8/setuptools_scm-3.4.3.tar.gz";
|
url = "https://files.pythonhosted.org/packages/b2/f7/60a645aae001a2e06cf4b8db2fba9d9f36b8fd378f10647e3e218b61b74b/setuptools_scm-3.5.0.tar.gz";
|
||||||
sha256 = "26b8a108783cd88f4b15ff1f0f347d6b476db25d0c226159b835d713f9487320";
|
sha256 = "5bdf21a05792903cafe7ae0c9501182ab52497614fa6b1750d9dbae7b60c1a87";
|
||||||
};
|
};
|
||||||
doCheck = commonDoCheck;
|
doCheck = commonDoCheck;
|
||||||
format = "pyproject";
|
format = "pyproject";
|
||||||
|
|
@ -1113,10 +1082,10 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
"tablib" = python.mkDerivation {
|
"tablib" = python.mkDerivation {
|
||||||
name = "tablib-1.0.0";
|
name = "tablib-1.1.0";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
url = "https://files.pythonhosted.org/packages/6e/2f/5378ce8151ade53a5c7bc8a0b960a250bfe816b75a2c26383f776824f866/tablib-1.0.0.tar.gz";
|
url = "https://files.pythonhosted.org/packages/ed/2a/72b7ed65a6a5da55dad08649f1340f82b53e663e616d147e3ed2cd518390/tablib-1.1.0.tar.gz";
|
||||||
sha256 = "ff3172802e8dd7fb795867942f5238f6c90e2d4e90ad6233c1a796cdfc63bb35";
|
sha256 = "4d1909aa3ff1c85ba97ad16176c0aeec33c8e894dc7ea6f10f2dd44701e99ba7";
|
||||||
};
|
};
|
||||||
doCheck = commonDoCheck;
|
doCheck = commonDoCheck;
|
||||||
format = "pyproject";
|
format = "pyproject";
|
||||||
|
|
@ -1130,10 +1099,10 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
"unidecode" = python.mkDerivation {
|
"unidecode" = python.mkDerivation {
|
||||||
name = "unidecode-1.0.23";
|
name = "unidecode-1.1.1";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
url = "https://files.pythonhosted.org/packages/9b/d8/c1b658ed7ff6e63a745eda483d7d917eb63a79c59fcb422469b85ff47e94/Unidecode-1.0.23.tar.gz";
|
url = "https://files.pythonhosted.org/packages/b1/d6/7e2a98e98c43cf11406de6097e2656d31559f788e9210326ce6544bd7d40/Unidecode-1.1.1.tar.gz";
|
||||||
sha256 = "8b85354be8fd0c0e10adbf0675f6dc2310e56fda43fa8fe049123b6c475e52fb";
|
sha256 = "2b6aab710c2a1647e928e36d69c21e76b453cd455f4e2621000e54b2a9b8cce8";
|
||||||
};
|
};
|
||||||
doCheck = commonDoCheck;
|
doCheck = commonDoCheck;
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
@ -1163,46 +1132,6 @@ let
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
"uvicorn" = python.mkDerivation {
|
|
||||||
name = "uvicorn-0.11.2";
|
|
||||||
src = pkgs.fetchurl {
|
|
||||||
url = "https://files.pythonhosted.org/packages/5c/ed/37f168f52814d09feaf0b4f6894704a17209f84219773def5b8b14a060dc/uvicorn-0.11.2.tar.gz";
|
|
||||||
sha256 = "11f397855c7f35dc034a3d288883382a4c16afdfe6675b70896f55bd6051da64";
|
|
||||||
};
|
|
||||||
doCheck = commonDoCheck;
|
|
||||||
format = "setuptools";
|
|
||||||
buildInputs = commonBuildInputs ++ [ ];
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
self."click"
|
|
||||||
self."h11"
|
|
||||||
self."httptools"
|
|
||||||
self."uvloop"
|
|
||||||
self."websockets"
|
|
||||||
];
|
|
||||||
meta = with pkgs.stdenv.lib; {
|
|
||||||
homepage = "https://github.com/encode/uvicorn";
|
|
||||||
license = licenses.bsdOriginal;
|
|
||||||
description = "The lightning-fast ASGI server.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
"uvloop" = python.mkDerivation {
|
|
||||||
name = "uvloop-0.14.0";
|
|
||||||
src = pkgs.fetchurl {
|
|
||||||
url = "https://files.pythonhosted.org/packages/84/2e/462e7a25b787d2b40cf6c9864a9e702f358349fc9cfb77e83c38acb73048/uvloop-0.14.0.tar.gz";
|
|
||||||
sha256 = "123ac9c0c7dd71464f58f1b4ee0bbd81285d96cdda8bc3519281b8973e3a461e";
|
|
||||||
};
|
|
||||||
doCheck = commonDoCheck;
|
|
||||||
format = "setuptools";
|
|
||||||
buildInputs = commonBuildInputs ++ [ ];
|
|
||||||
propagatedBuildInputs = [ ];
|
|
||||||
meta = with pkgs.stdenv.lib; {
|
|
||||||
homepage = "http://github.com/MagicStack/uvloop";
|
|
||||||
license = licenses.asl20;
|
|
||||||
description = "Fast implementation of asyncio event loop on top of libuv";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
"webencodings" = python.mkDerivation {
|
"webencodings" = python.mkDerivation {
|
||||||
name = "webencodings-0.5.1";
|
name = "webencodings-0.5.1";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
|
|
@ -1220,23 +1149,6 @@ let
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
"websockets" = python.mkDerivation {
|
|
||||||
name = "websockets-8.1";
|
|
||||||
src = pkgs.fetchurl {
|
|
||||||
url = "https://files.pythonhosted.org/packages/e9/2b/cf738670bb96eb25cb2caf5294e38a9dc3891a6bcd8e3a51770dbc517c65/websockets-8.1.tar.gz";
|
|
||||||
sha256 = "5c65d2da8c6bce0fca2528f69f44b2f977e06954c8512a952222cea50dad430f";
|
|
||||||
};
|
|
||||||
doCheck = commonDoCheck;
|
|
||||||
format = "setuptools";
|
|
||||||
buildInputs = commonBuildInputs ++ [ ];
|
|
||||||
propagatedBuildInputs = [ ];
|
|
||||||
meta = with pkgs.stdenv.lib; {
|
|
||||||
homepage = "https://github.com/aaugustin/websockets";
|
|
||||||
license = licenses.bsdOriginal;
|
|
||||||
description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
"wheel" = python.mkDerivation {
|
"wheel" = python.mkDerivation {
|
||||||
name = "wheel-0.34.2";
|
name = "wheel-0.34.2";
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
|
|
@ -1276,7 +1188,7 @@ let
|
||||||
localOverridesFile = ./requirements_override.nix;
|
localOverridesFile = ./requirements_override.nix;
|
||||||
localOverrides = import localOverridesFile { inherit pkgs python; };
|
localOverrides = import localOverridesFile { inherit pkgs python; };
|
||||||
commonOverrides = [
|
commonOverrides = [
|
||||||
(let src = pkgs.fetchFromGitHub { owner = "nix-community"; repo = "pypi2nix-overrides"; rev = "ebc21a64505989717dc395ad92f0a4d7021c44bc"; sha256 = "1p1bqm80anxsnh2k26y0f066z3zpngwxpff1jldzzkbhvw8zw77i"; } ; in import "${src}/overrides.nix" { inherit pkgs python; })
|
(let src = pkgs.fetchFromGitHub { owner = "nix-community"; repo = "pypi2nix-overrides"; rev = "100c15ec7dfe7d241402ecfb1e796328d0eaf1ec"; sha256 = "0akfkvdakcdxc1lrxznh1rz2811x4pafnsq3jnyr5pn3m30pc7db"; } ; in import "${src}/overrides.nix" { inherit pkgs python; })
|
||||||
];
|
];
|
||||||
paramOverrides = [
|
paramOverrides = [
|
||||||
(overrides { inherit pkgs python; })
|
(overrides { inherit pkgs python; })
|
||||||
|
|
|
||||||
|
|
@ -20,5 +20,4 @@ django-classy-tags>=0.9
|
||||||
django-sekizai>=1.0
|
django-sekizai>=1.0
|
||||||
django-mptt>0.9
|
django-mptt>0.9
|
||||||
|
|
||||||
uvicorn
|
gunicorn
|
||||||
uvloop
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ aldryn-forms==4.0.1
|
||||||
cachetools==4.0.0
|
cachetools==4.0.0
|
||||||
certifi==2019.11.28
|
certifi==2019.11.28
|
||||||
chardet==3.0.4
|
chardet==3.0.4
|
||||||
Click==7.0
|
|
||||||
cssselect==1.1.0
|
cssselect==1.1.0
|
||||||
cssutils==1.0.2
|
cssutils==1.0.2
|
||||||
Django==2.1.15
|
Django==2.1.15
|
||||||
|
|
@ -12,11 +11,11 @@ django-appconf==1.0.3
|
||||||
django-classy-tags==1.0.0
|
django-classy-tags==1.0.0
|
||||||
django-cms==3.7.1
|
django-cms==3.7.1
|
||||||
django-emailit==0.2.4
|
django-emailit==0.2.4
|
||||||
django-filer==1.6.0
|
django-filer==1.7.0
|
||||||
django-formtools==2.2
|
django-formtools==2.2
|
||||||
django-js-asset==1.2.2
|
django-js-asset==1.2.2
|
||||||
django-mptt==0.11.0
|
django-mptt==0.11.0
|
||||||
django-polymorphic==2.0.3
|
django-polymorphic==2.1.2
|
||||||
django-ranged-response==0.2.0
|
django-ranged-response==0.2.0
|
||||||
django-sekizai==1.1.0
|
django-sekizai==1.1.0
|
||||||
django-simple-captcha==0.5.12
|
django-simple-captcha==0.5.12
|
||||||
|
|
@ -37,24 +36,20 @@ djangocms-text-ckeditor==3.8.0
|
||||||
djangocms-video==2.2.0
|
djangocms-video==2.2.0
|
||||||
easy-thumbnails==2.7
|
easy-thumbnails==2.7
|
||||||
et-xmlfile==1.0.1
|
et-xmlfile==1.0.1
|
||||||
h11==0.9.0
|
gunicorn==20.0.4
|
||||||
html5lib==1.0.1
|
html5lib==1.0.1
|
||||||
httptools==0.0.13
|
idna==2.9
|
||||||
idna==2.8
|
|
||||||
jdcal==1.4.1
|
jdcal==1.4.1
|
||||||
lxml==4.5.0
|
lxml==4.5.0
|
||||||
openpyxl==2.4.9
|
openpyxl==2.4.9
|
||||||
Pillow==7.0.0
|
Pillow==7.0.0
|
||||||
premailer==3.6.1
|
premailer==3.6.1
|
||||||
pytz==2019.3
|
pytz==2019.3
|
||||||
requests==2.22.0
|
requests==2.23.0
|
||||||
setuptools-scm==3.4.3
|
setuptools-scm==3.5.0
|
||||||
six==1.14.0
|
six==1.14.0
|
||||||
tablib==1.0.0
|
tablib==1.1.0
|
||||||
Unidecode==1.0.23
|
Unidecode==1.1.1
|
||||||
urllib3==1.25.8
|
urllib3==1.25.8
|
||||||
uvicorn==0.11.2
|
|
||||||
uvloop==0.14.0
|
|
||||||
webencodings==0.5.1
|
webencodings==0.5.1
|
||||||
websockets==8.1
|
|
||||||
YURL==1.0.0
|
YURL==1.0.0
|
||||||
|
|
|
||||||
39
src/strojnadzor/management/commands/runserver-gunicorn.py
Normal file
39
src/strojnadzor/management/commands/runserver-gunicorn.py
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
import gunicorn.app.base
|
||||||
|
from django.core.management.base import BaseCommand, CommandError
|
||||||
|
|
||||||
|
from strojnadzor.wsgi import application
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
help = "Run Uvicorn HTTP server"
|
||||||
|
|
||||||
|
def add_arguments(self, parser):
|
||||||
|
parser.add_argument("--bind", type=str, default="127.0.0.1:9000")
|
||||||
|
parser.add_argument("-w", "--workers", type=int, default=2)
|
||||||
|
|
||||||
|
def handle(self, bind, workers, **kwargs):
|
||||||
|
options = {
|
||||||
|
"bind": bind,
|
||||||
|
"workers": workers,
|
||||||
|
"accesslog": "-",
|
||||||
|
}
|
||||||
|
StandaloneApplication(application, options).run()
|
||||||
|
|
||||||
|
|
||||||
|
class StandaloneApplication(gunicorn.app.base.BaseApplication):
|
||||||
|
def __init__(self, app, options=None):
|
||||||
|
self.options = options or {}
|
||||||
|
self.application = app
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
def load_config(self):
|
||||||
|
config = {
|
||||||
|
key: value
|
||||||
|
for key, value in self.options.items()
|
||||||
|
if key in self.cfg.settings and value is not None
|
||||||
|
}
|
||||||
|
for key, value in config.items():
|
||||||
|
self.cfg.set(key.lower(), value)
|
||||||
|
|
||||||
|
def load(self):
|
||||||
|
return self.application
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
import uvicorn
|
|
||||||
from django.core.management.base import BaseCommand, CommandError
|
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
|
||||||
help = "Run Uvicorn HTTP server"
|
|
||||||
|
|
||||||
def add_arguments(self, parser):
|
|
||||||
parser.add_argument("host", type=str)
|
|
||||||
parser.add_argument("port", type=int)
|
|
||||||
parser.add_argument("-w", "--workers", type=int, default=2)
|
|
||||||
|
|
||||||
def handle(self, host, port, workers, **kwargs):
|
|
||||||
uvicorn.run(
|
|
||||||
"strojnadzor.wsgi:application",
|
|
||||||
interface="wsgi",
|
|
||||||
loop="uvloop",
|
|
||||||
workers=workers,
|
|
||||||
host=host,
|
|
||||||
port=port,
|
|
||||||
)
|
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue