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.
This commit is contained in:
@@ -50,6 +50,7 @@ typedef struct {
|
||||
char *home;
|
||||
nxt_str_t path;
|
||||
nxt_str_t module;
|
||||
char *callable;
|
||||
} nxt_python_app_conf_t;
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
};
|
||||
|
||||
|
||||
@@ -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),
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user