Add runserver-uvicorn command

This commit is contained in:
Andrey Golovizin 2020-02-08 14:09:28 +01:00
parent a9f51afeb7
commit d8cdf6c140
6 changed files with 144 additions and 1 deletions

View file

@ -30,5 +30,7 @@ python.mkDerivation {
djangocms-video
easy-thumbnails
setuptools
uvicorn
uvloop
];
}

View file

@ -179,6 +179,23 @@ 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 {
name = "cssselect-1.1.0";
src = pkgs.fetchurl {
@ -837,6 +854,23 @@ let
};
};
"h11" = python.mkDerivation {
name = "h11-0.9.0";
src = pkgs.fetchurl {
url = "https://files.pythonhosted.org/packages/34/5a/abaa557d20b210117d8c3e6b0b817ce9b329b2e81f87612e60102a924323/h11-0.9.0.tar.gz";
sha256 = "33d4bca7be0fa039f4e84d50ab00531047e53d6ee8ffbc83501ea602c169cae1";
};
doCheck = commonDoCheck;
format = "setuptools";
buildInputs = commonBuildInputs ++ [ ];
propagatedBuildInputs = [ ];
meta = with pkgs.stdenv.lib; {
homepage = "https://github.com/python-hyper/h11";
license = licenses.mit;
description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1";
};
};
"html5lib" = python.mkDerivation {
name = "html5lib-1.0.1";
src = pkgs.fetchurl {
@ -857,6 +891,23 @@ 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 {
name = "idna-2.8";
src = pkgs.fetchurl {
@ -1112,6 +1163,46 @@ 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 {
name = "webencodings-0.5.1";
src = pkgs.fetchurl {
@ -1129,6 +1220,23 @@ 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 {
name = "wheel-0.34.2";
src = pkgs.fetchurl {

View file

@ -19,3 +19,6 @@ Django<2.2
django-classy-tags>=0.9
django-sekizai>=1.0
django-mptt>0.9
uvicorn
uvloop

View file

@ -3,6 +3,7 @@ aldryn-forms==4.0.1
cachetools==4.0.0
certifi==2019.11.28
chardet==3.0.4
Click==7.0
cssselect==1.1.0
cssutils==1.0.2
Django==2.1.15
@ -36,7 +37,9 @@ djangocms-text-ckeditor==3.8.0
djangocms-video==2.2.0
easy-thumbnails==2.7
et-xmlfile==1.0.1
h11==0.9.0
html5lib==1.0.1
httptools==0.0.13
idna==2.8
jdcal==1.4.1
lxml==4.5.0
@ -50,5 +53,8 @@ six==1.14.0
tablib==1.0.0
Unidecode==1.0.23
urllib3==1.25.8
uvicorn==0.11.2
uvloop==0.14.0
webencodings==0.5.1
websockets==8.1
YURL==1.0.0

View file

@ -0,0 +1,22 @@
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,
)

View file

@ -1,7 +1,7 @@
import os # isort:skip
gettext = lambda s: s
DATA_DIR = os.path.dirname(os.path.dirname(__file__))
DATA_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
"""
Django settings for strojnadzor project.
@ -216,3 +216,5 @@ DJANGOCMS_PICTURE_RESPONSIVE_IMAGES = True
DJANGOCMS_PICTURE_RESPONSIVE_IMAGES_VIEWPORT_BREAKPOINTS = [300, 400, 576, 768]
DEFAULT_FROM_EMAIL = "noreply@sologoc.com"
FILER_DEBUG = True
THUMBNAIL_DEBUG = True