diff options
author | Max Romanov <max.romanov@nginx.com> | 2020-09-18 13:41:58 +0300 |
---|---|---|
committer | Max Romanov <max.romanov@nginx.com> | 2020-09-18 13:41:58 +0300 |
commit | f16ae01b12e612701f44c028f188d1ded58d0358 (patch) | |
tree | 4f27231e1e7fdebfa7df9b7c07eb183fa4d82b07 | |
parent | 6b9882fc142cab4a15a272991096ef4db260bf0f (diff) | |
download | unit-f16ae01b12e612701f44c028f188d1ded58d0358.tar.gz unit-f16ae01b12e612701f44c028f188d1ded58d0358.tar.bz2 |
Python: app module callable name configuration.
Now it is possible to specify the name of the application callable using
optional parameter 'callable'. Default value is 'application'.
This closes #290 issue on GitHub.
-rw-r--r-- | src/nxt_application.h | 1 | ||||
-rw-r--r-- | src/nxt_conf_validation.c | 6 | ||||
-rw-r--r-- | src/nxt_main_process.c | 6 | ||||
-rw-r--r-- | src/python/nxt_python.c | 13 |
4 files changed, 21 insertions, 5 deletions
diff --git a/src/nxt_application.h b/src/nxt_application.h index 3144dc3f..cb49a033 100644 --- a/src/nxt_application.h +++ b/src/nxt_application.h @@ -50,6 +50,7 @@ typedef struct { char *home; nxt_str_t path; nxt_str_t module; + char *callable; } nxt_python_app_conf_t; diff --git a/src/nxt_conf_validation.c b/src/nxt_conf_validation.c index 9dd4f715..4364057b 100644 --- a/src/nxt_conf_validation.c +++ b/src/nxt_conf_validation.c @@ -773,6 +773,12 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_python_members[] = { NULL, NULL }, + { nxt_string("callable"), + NXT_CONF_VLDT_STRING, + 0, + NULL, + NULL }, + NXT_CONF_VLDT_NEXT(&nxt_conf_vldt_common_members) }; diff --git a/src/nxt_main_process.c b/src/nxt_main_process.c index 544a0cbd..d2edab1d 100644 --- a/src/nxt_main_process.c +++ b/src/nxt_main_process.c @@ -191,6 +191,12 @@ static nxt_conf_map_t nxt_python_app_conf[] = { NXT_CONF_MAP_STR, offsetof(nxt_common_app_conf_t, u.python.module), }, + + { + nxt_string("callable"), + NXT_CONF_MAP_CSTRZ, + offsetof(nxt_common_app_conf_t, u.python.callable), + }, }; diff --git a/src/python/nxt_python.c b/src/python/nxt_python.c index 5b6021bb..7d4589ed 100644 --- a/src/python/nxt_python.c +++ b/src/python/nxt_python.c @@ -60,6 +60,7 @@ nxt_python_start(nxt_task_t *task, nxt_process_data_t *data) char *nxt_py_module; size_t len; PyObject *obj, *pypath, *module; + const char *callable; nxt_unit_ctx_t *unit_ctx; nxt_unit_init_t python_init; nxt_common_app_conf_t *app_conf; @@ -199,16 +200,18 @@ nxt_python_start(nxt_task_t *task, nxt_process_data_t *data) goto fail; } - obj = PyDict_GetItemString(PyModule_GetDict(module), "application"); + callable = (c->callable != NULL) ? c->callable : "application"; + + obj = PyDict_GetItemString(PyModule_GetDict(module), callable); if (nxt_slow_path(obj == NULL)) { - nxt_alert(task, "Python failed to get \"application\" " - "from module \"%s\"", nxt_py_module); + nxt_alert(task, "Python failed to get \"%s\" " + "from module \"%s\"", callable, nxt_py_module); goto fail; } if (nxt_slow_path(PyCallable_Check(obj) == 0)) { - nxt_alert(task, "\"application\" in module \"%s\" " - "is not a callable object", nxt_py_module); + nxt_alert(task, "\"%s\" in module \"%s\" " + "is not a callable object", callable, nxt_py_module); goto fail; } |