diff --git a/plugins/python/uwsgi_pymodule.c b/plugins/python/uwsgi_pymodule.c index 2152198a..5890b710 100644 --- a/plugins/python/uwsgi_pymodule.c +++ b/plugins/python/uwsgi_pymodule.c @@ -2261,7 +2261,7 @@ PyObject *py_uwsgi_workers(PyObject * self, PyObject * args) { } Py_DECREF(zero); - zero = PyFloat_FromDouble(uwsgi.workers[i + 1].running_time); + zero = PyLong_FromLong(uwsgi.workers[i + 1].running_time); if (PyDict_SetItemString(worker_dict, "running_time", zero)) { goto clear; } @@ -2285,14 +2285,11 @@ PyObject *py_uwsgi_workers(PyObject * self, PyObject * args) { } Py_DECREF(zero); - /* return a tuple of current status ! (in_request, blocking, locking, ) - - zero = PyLong_FromLong(uwsgi.workers[i+1].in_request); - if (PyDict_SetItemString(worker_dict, "in_request", zero)) { - goto clear; - } - Py_DECREF(zero); - */ + zero = PyLong_FromLong(uwsgi.workers[i + 1].avg_response_time); + if (PyDict_SetItemString(worker_dict, "avg_rt", zero)) { + goto clear; + } + Py_DECREF(zero); apps_tuple = PyTuple_New(uwsgi.workers[i+1].apps_cnt); diff --git a/utils.c b/utils.c index 845261e2..7a01ed47 100644 --- a/utils.c +++ b/utils.c @@ -660,10 +660,14 @@ void uwsgi_close_request(struct wsgi_request *wsgi_req) { int waitpid_status; int tmp_id; + uint64_t tmp_rt; gettimeofday(&wsgi_req->end_of_request, NULL); - //uwsgi.workers[uwsgi.mywid].running_time += (double) (((double) (wsgi_req->end_of_request.tv_sec * 1000000 + wsgi_req->end_of_request.tv_usec) - (double) (wsgi_req->start_of_request.tv_sec * 1000000 + wsgi_req->start_of_request.tv_usec)) / (double) 1000.0); + + tmp_rt = (wsgi_req->end_of_request.tv_sec * 1000000 + wsgi_req->end_of_request.tv_usec) - (wsgi_req->start_of_request.tv_sec * 1000000 + wsgi_req->start_of_request.tv_usec); + uwsgi.workers[uwsgi.mywid].running_time += tmp_rt; + uwsgi.workers[uwsgi.mywid].avg_response_time = (uwsgi.workers[uwsgi.mywid].avg_response_time+tmp_rt)/2; // get memory usage if (uwsgi.shared->options[UWSGI_OPTION_MEMORY_DEBUG] == 1 || uwsgi.reload_on_as || uwsgi.reload_on_rss) diff --git a/uwsgi.h b/uwsgi.h index 6c664f66..bb07b257 100644 --- a/uwsgi.h +++ b/uwsgi.h @@ -710,6 +710,7 @@ struct uwsgi_app { void *uwsgi_version; void *uwsgi_node; + uint64_t avg_response_time; }; @@ -1570,8 +1571,7 @@ struct uwsgi_worker { uint64_t vsz_size; uint64_t rss_size; - double running_time; - double last_running_time; + uint64_t running_time; int manage_next_request; @@ -1587,6 +1587,8 @@ struct uwsgi_worker { int busy; int cheaped; + uint64_t avg_response_time; + }; diff --git a/welcome.py b/welcome.py index 6fa06819..0b725c6e 100644 --- a/welcome.py +++ b/welcome.py @@ -69,9 +69,9 @@ def application(env, start_response): apps += '' workers += """ -%d%d%s%d%s +%d%d%s%d%d%d%s - """ % (w['id'], w['pid'], w['status'], w['tx'], apps) + """ % (w['id'], w['pid'], w['status'], w['running_time']/1000, w['avg_rt']/1000, w['tx'], apps) return """ version %s
@@ -89,7 +89,7 @@ Dynamic options
Workers and applications
- + %s
widpidstatustxappswidpidstatusrunning timeaveragetxapps