summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_conf_validation.c
diff options
context:
space:
mode:
authorGourav <gouravkandoria1500@gmail.com>2024-06-26 11:14:50 +0530
committerAndrew Clayton <a.clayton@nginx.com>2024-07-02 19:13:14 +0100
commita9aa9e76db2766a681350c09947df848898531f6 (patch)
treeb95692f62e8bce738656740e6fb8fea20fe03b76 /src/nxt_conf_validation.c
parentd62a5e2c3749a927e1f5283c1ad2178d665cd399 (diff)
downloadunit-a9aa9e76db2766a681350c09947df848898531f6.tar.gz
unit-a9aa9e76db2766a681350c09947df848898531f6.tar.bz2
python: Support application factories
Adds support for the app factory pattern to the Python language module. A factory is a callable that returns a WSGI or ASGI application object. Unit does not support passing arguments to factories. Setting the `factory` option to `true` instructs Unit to treat the configured `callable` as a factory. For example: "my-app": { "type": "python", "path": "/srv/www/", "module": "hello", "callable": "create_app", "factory": true } This is similar to other WSGI / ASGI servers. E.g., $ uvicorn --factory hello:create_app $ gunicorn 'hello:create_app()' The factory setting defaults to false. Closes: https://github.com/nginx/unit/issues/1106 Link: <https://github.com/nginx/unit/pull/1336#issuecomment-2179381605> [ Commit message - Dan / Minor code tweaks - Andrew ] Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
Diffstat (limited to 'src/nxt_conf_validation.c')
-rw-r--r--src/nxt_conf_validation.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/nxt_conf_validation.c b/src/nxt_conf_validation.c
index f91fc887..04091745 100644
--- a/src/nxt_conf_validation.c
+++ b/src/nxt_conf_validation.c
@@ -842,6 +842,11 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_python_members[] = {
.validator = nxt_conf_vldt_targets_exclusive,
.u.string = "callable",
}, {
+ .name = nxt_string("factory"),
+ .type = NXT_CONF_VLDT_BOOLEAN,
+ .validator = nxt_conf_vldt_targets_exclusive,
+ .u.string = "factory",
+ }, {
.name = nxt_string("prefix"),
.type = NXT_CONF_VLDT_STRING,
.validator = nxt_conf_vldt_targets_exclusive,
@@ -866,6 +871,9 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_python_target_members[] = {
.name = nxt_string("callable"),
.type = NXT_CONF_VLDT_STRING,
}, {
+ .name = nxt_string("factory"),
+ .type = NXT_CONF_VLDT_BOOLEAN,
+ }, {
.name = nxt_string("prefix"),
.type = NXT_CONF_VLDT_STRING,
.validator = nxt_conf_vldt_python_prefix,
@@ -884,6 +892,9 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_python_notargets_members[] = {
.name = nxt_string("callable"),
.type = NXT_CONF_VLDT_STRING,
}, {
+ .name = nxt_string("factory"),
+ .type = NXT_CONF_VLDT_BOOLEAN,
+ }, {
.name = nxt_string("prefix"),
.type = NXT_CONF_VLDT_STRING,
.validator = nxt_conf_vldt_python_prefix,