diff --git a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c index c97297c0..10141ce4 100644 --- a/plugins/python/python_plugin.c +++ b/plugins/python/python_plugin.c @@ -1023,7 +1023,7 @@ void uwsgi_python_add_item(char *key, uint16_t keylen, char *val, uint16_t valle PyDict_SetItem(pydict, PyString_FromStringAndSize(key, keylen), PyString_FromStringAndSize(val, vallen)); } -int uwsgi_python_spooler(char *buf, uint16_t len, char *body, size_t body_len) { +int uwsgi_python_spooler(char *filename, char *buf, uint16_t len, char *body, size_t body_len) { static int random_seed_reset = 0; @@ -1057,6 +1057,9 @@ int uwsgi_python_spooler(char *buf, uint16_t len, char *body, size_t body_len) { } pyargs = PyTuple_New(1); + + PyDict_SetItemString(spool_dict, "spooler_task_name", PyString_FromString(filename)); + if (body && body_len > 0) { PyDict_SetItemString(spool_dict, "body", PyString_FromStringAndSize(body, body_len)); } diff --git a/plugins/python/uwsgi_pymodule.c b/plugins/python/uwsgi_pymodule.c index a72864bc..f49a0f0c 100644 --- a/plugins/python/uwsgi_pymodule.c +++ b/plugins/python/uwsgi_pymodule.c @@ -1393,6 +1393,10 @@ PyObject *py_uwsgi_send_spool(PyObject * self, PyObject * args, PyObject *kw) { Py_DECREF(spool_vars); if (i > 0) { + char *slash = uwsgi_get_last_char(spool_filename, '/'); + if (slash) { + return PyString_FromString(slash+1); + } return PyString_FromString(spool_filename); } return PyErr_Format(PyExc_ValueError, "unable to spool job"); diff --git a/spooler.c b/spooler.c index d2171821..edfc5397 100644 --- a/spooler.c +++ b/spooler.c @@ -385,7 +385,7 @@ void spooler_manage_task(char *dir, char *task) { for(i=0;i<0xff;i++) { if (uwsgi.p[i]->spooler) { time_t now = time(NULL); - ret = uwsgi.p[i]->spooler(spool_buf, uh.pktsize, body, body_len); + ret = uwsgi.p[i]->spooler(task, spool_buf, uh.pktsize, body, body_len); if (body) { free(body); } diff --git a/uwsgi.h b/uwsgi.h index 9f0dad05..51aeb9e3 100644 --- a/uwsgi.h +++ b/uwsgi.h @@ -594,7 +594,7 @@ struct uwsgi_plugin { char *(*decode_string) (void *); int (*signal_handler) (uint8_t, void *); - int (*spooler) (char *, uint16_t, char *, size_t); + int (*spooler) (char *, char *, uint16_t, char *, size_t); uint16_t(*rpc) (void *, uint8_t, char **, char *);