mirror of
https://github.com/clearlinux/uwsgi.git
synced 2026-08-29 02:05:38 +00:00
Merge branch 'master' of github.com:unbit/uwsgi
This commit is contained in:
@@ -24,3 +24,4 @@ Stephen Pierce
|
||||
Mingli Yuan
|
||||
Natanael Copa
|
||||
Roberto Leandrini
|
||||
Ryan Petrello
|
||||
|
||||
@@ -607,6 +607,52 @@ PyObject *uwsgi_file_loader(void *arg1) {
|
||||
|
||||
}
|
||||
|
||||
PyObject *uwsgi_pecan_loader(void *arg1) {
|
||||
|
||||
char *pecan = (char *) arg1;
|
||||
PyObject *pecan_module, *pecan_dict, *pecan_deploy;
|
||||
PyObject *pecan_arg, *pecan_app;
|
||||
|
||||
uwsgi_log( "Loading pecan environment: %s\n", pecan);
|
||||
|
||||
pecan_module = PyImport_ImportModule("pecan.deploy");
|
||||
if (!pecan_module) {
|
||||
PyErr_Print();
|
||||
exit(UWSGI_FAILED_APP_CODE);
|
||||
}
|
||||
|
||||
pecan_dict = PyModule_GetDict(pecan_module);
|
||||
if (!pecan_dict) {
|
||||
PyErr_Print();
|
||||
exit(UWSGI_FAILED_APP_CODE);
|
||||
}
|
||||
|
||||
pecan_deploy = PyDict_GetItemString(pecan_dict, "deploy");
|
||||
if (!pecan_deploy) {
|
||||
PyErr_Print();
|
||||
exit(UWSGI_FAILED_APP_CODE);
|
||||
}
|
||||
|
||||
pecan_arg = PyTuple_New(1);
|
||||
if (!pecan_arg) {
|
||||
PyErr_Print();
|
||||
exit(UWSGI_FAILED_APP_CODE);
|
||||
}
|
||||
|
||||
if (PyTuple_SetItem(pecan_arg, 0, UWSGI_PYFROMSTRING(pecan))) {
|
||||
PyErr_Print();
|
||||
exit(UWSGI_FAILED_APP_CODE);
|
||||
}
|
||||
|
||||
pecan_app = PyEval_CallObject(pecan_deploy, pecan_arg);
|
||||
if (!pecan_app) {
|
||||
PyErr_Print();
|
||||
exit(UWSGI_FAILED_APP_CODE);
|
||||
}
|
||||
|
||||
return pecan_app;
|
||||
}
|
||||
|
||||
PyObject *uwsgi_paste_loader(void *arg1) {
|
||||
|
||||
char *paste = (char *) arg1;
|
||||
@@ -668,7 +714,6 @@ PyObject *uwsgi_paste_loader(void *arg1) {
|
||||
exit(UWSGI_FAILED_APP_CODE);
|
||||
}
|
||||
|
||||
|
||||
return paste_app;
|
||||
}
|
||||
|
||||
|
||||
@@ -121,6 +121,9 @@ struct uwsgi_option uwsgi_python_options[] = {
|
||||
{"pyargv", required_argument, 0, "manually set sys.argv", uwsgi_opt_set_str, &up.argv, 0},
|
||||
{"optimize", required_argument, 'O', "set python optimization level", uwsgi_opt_set_int, &up.optimize, 0},
|
||||
|
||||
|
||||
{"pecan", required_argument, 0, "load a pecan config file", uwsgi_opt_set_str, &up.pecan, 0},
|
||||
|
||||
{"paste", required_argument, 0, "load a paste.deploy config file", uwsgi_opt_set_str, &up.paste, 0},
|
||||
{"paste-logger", no_argument, 0, "enable paste fileConfig logger", uwsgi_opt_true, &up.paste_logger, 0},
|
||||
|
||||
@@ -1058,6 +1061,7 @@ void uwsgi_python_init_apps() {
|
||||
up.loaders[LOADER_DYN] = uwsgi_dyn_loader;
|
||||
up.loaders[LOADER_UWSGI] = uwsgi_uwsgi_loader;
|
||||
up.loaders[LOADER_FILE] = uwsgi_file_loader;
|
||||
up.loaders[LOADER_PECAN] = uwsgi_pecan_loader;
|
||||
up.loaders[LOADER_PASTE] = uwsgi_paste_loader;
|
||||
up.loaders[LOADER_EVAL] = uwsgi_eval_loader;
|
||||
up.loaders[LOADER_MOUNT] = uwsgi_mount_loader;
|
||||
@@ -1123,6 +1127,9 @@ next:
|
||||
if (up.file_config != NULL) {
|
||||
init_uwsgi_app(LOADER_FILE, up.file_config, uwsgi.wsgi_req, up.main_thread, PYTHON_APP_TYPE_WSGI);
|
||||
}
|
||||
if (up.pecan != NULL) {
|
||||
init_uwsgi_app(LOADER_PECAN, up.pecan, uwsgi.wsgi_req, up.main_thread, PYTHON_APP_TYPE_WSGI);
|
||||
}
|
||||
if (up.paste != NULL) {
|
||||
init_uwsgi_app(LOADER_PASTE, up.paste, uwsgi.wsgi_req, up.main_thread, PYTHON_APP_TYPE_WSGI);
|
||||
}
|
||||
|
||||
@@ -81,8 +81,9 @@ PyAPI_FUNC(PyObject *) PyMarshal_ReadObjectFromString(char *, Py_ssize_t);
|
||||
#define LOADER_CALLABLE 5
|
||||
#define LOADER_STRING_CALLABLE 6
|
||||
#define LOADER_MOUNT 7
|
||||
#define LOADER_PECAN 8
|
||||
|
||||
#define LOADER_MAX 8
|
||||
#define LOADER_MAX 9
|
||||
|
||||
typedef struct uwsgi_Input {
|
||||
PyObject_HEAD
|
||||
@@ -124,6 +125,8 @@ struct uwsgi_python {
|
||||
PyObject *loader_dict;
|
||||
PyObject* (*loaders[LOADER_MAX]) (void *);
|
||||
|
||||
char *pecan;
|
||||
|
||||
char *wsgi_config;
|
||||
char *file_config;
|
||||
char *paste;
|
||||
@@ -218,6 +221,7 @@ PyObject *uwsgi_uwsgi_loader(void *);
|
||||
PyObject *uwsgi_dyn_loader(void *);
|
||||
PyObject *uwsgi_file_loader(void *);
|
||||
PyObject *uwsgi_eval_loader(void *);
|
||||
PyObject *uwsgi_pecan_loader(void *);
|
||||
PyObject *uwsgi_paste_loader(void *);
|
||||
PyObject *uwsgi_callable_loader(void *);
|
||||
PyObject *uwsgi_string_callable_loader(void *);
|
||||
|
||||
Reference in New Issue
Block a user