mirror of
https://github.com/clearlinux/uwsgi.git
synced 2026-08-28 17:55:39 +00:00
dynamic app optimizations
This commit is contained in:
@@ -1776,6 +1776,9 @@ int main(int argc, char *argv[], char *envp[]) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// re-initialize wsgi_req (can be full of init_uwsgi_app data)
|
||||
memset(uwsgi.wsgi_requests, 0, sizeof(struct wsgi_request) * uwsgi.async);
|
||||
|
||||
while (uwsgi.workers[uwsgi.mywid].manage_next_request) {
|
||||
|
||||
|
||||
@@ -2068,6 +2071,17 @@ int init_uwsgi_app(PyObject * force_wsgi_dict, PyObject * my_callable) {
|
||||
|
||||
if (uwsgi.wsgi_config == NULL) {
|
||||
if (uwsgi.wsgi_req->wsgi_script_len > 0) {
|
||||
uwsgi.wsgi_req->wsgi_callable = strchr(uwsgi.wsgi_req->wsgi_script, ':');
|
||||
if (uwsgi.wsgi_req->wsgi_callable) {
|
||||
uwsgi.wsgi_req->wsgi_callable[0] = 0;
|
||||
uwsgi.wsgi_req->wsgi_callable++;
|
||||
uwsgi.wsgi_req->wsgi_callable_len = uwsgi.wsgi_req->wsgi_script_len - strlen(uwsgi.wsgi_req->wsgi_script) - 1;
|
||||
uwsgi.wsgi_req->wsgi_script_len = strlen(uwsgi.wsgi_req->wsgi_script);
|
||||
}
|
||||
else {
|
||||
uwsgi.wsgi_req->wsgi_callable = "application";
|
||||
uwsgi.wsgi_req->wsgi_callable_len = 11;
|
||||
}
|
||||
memcpy(tmpstring, uwsgi.wsgi_req->wsgi_script, uwsgi.wsgi_req->wsgi_script_len);
|
||||
wsgi_module = PyImport_ImportModule(tmpstring);
|
||||
if (!wsgi_module) {
|
||||
@@ -2078,8 +2092,6 @@ int init_uwsgi_app(PyObject * force_wsgi_dict, PyObject * my_callable) {
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
uwsgi.wsgi_req->wsgi_callable = "application";
|
||||
uwsgi.wsgi_req->wsgi_callable_len = 11;
|
||||
}
|
||||
else {
|
||||
memcpy(tmpstring, uwsgi.wsgi_req->wsgi_module, uwsgi.wsgi_req->wsgi_module_len);
|
||||
|
||||
+2
-6
@@ -155,15 +155,11 @@ int uwsgi_request_wsgi(struct uwsgi_server *uwsgi, struct wsgi_request *wsgi_req
|
||||
if (PyDict_Contains(uwsgi->py_apps, zero)) {
|
||||
wsgi_req->app_id = PyInt_AsLong(PyDict_GetItem(uwsgi->py_apps, zero));
|
||||
}
|
||||
else {
|
||||
else if (wsgi_req->script_name_len > 1 || uwsgi->default_app < 0) {
|
||||
/* unavailable app for this SCRIPT_NAME */
|
||||
wsgi_req->app_id = -1;
|
||||
if (wsgi_req->wsgi_script_len > 0 || (wsgi_req->wsgi_callable_len > 0 && wsgi_req->wsgi_module_len > 0)) {
|
||||
if ((wsgi_req->app_id = init_uwsgi_app(NULL, NULL)) == -1) {
|
||||
internal_server_error(wsgi_req->poll.fd, "wsgi application not found");
|
||||
Py_DECREF(zero);
|
||||
goto clear2;
|
||||
}
|
||||
wsgi_req->app_id = init_uwsgi_app(NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user