{
PyObject *r;
char **argv;
- int argc;
+ int argc, status;
if (create_args("create", args, &argc, &argv) < 0)
return NULL;
- if (rrd_create(argc, argv) == -1) {
+ Py_BEGIN_ALLOW_THREADS
+ status = rrd_create(argc, argv);
+ Py_END_ALLOW_THREADS
+
+ if (status == -1) {
PyErr_SetString(ErrorObject, rrd_get_error());
rrd_clear_error();
r = NULL;
{
PyObject *r;
char **argv;
- int argc;
+ int argc, status;
if (create_args("update", args, &argc, &argv) < 0)
return NULL;
- if (rrd_update(argc, argv) == -1) {
+ Py_BEGIN_ALLOW_THREADS
+ status = rrd_update(argc, argv);
+ Py_END_ALLOW_THREADS
+
+ if (status == -1) {
PyErr_SetString(ErrorObject, rrd_get_error());
rrd_clear_error();
r = NULL;
rrd_value_t *data, *datai;
unsigned long step, ds_cnt;
time_t start, end;
- int argc;
+ int argc, status;
char **argv, **ds_namv;
if (create_args("fetch", args, &argc, &argv) < 0)
return NULL;
- if (rrd_fetch(argc, argv, &start, &end, &step,
- &ds_cnt, &ds_namv, &data) == -1) {
+ Py_BEGIN_ALLOW_THREADS
+ status = rrd_fetch(argc, argv, &start, &end, &step, &ds_cnt, &ds_namv, &data);
+ Py_END_ALLOW_THREADS
+
+ if (status == -1) {
PyErr_SetString(ErrorObject, rrd_get_error());
rrd_clear_error();
r = NULL;
{
PyObject *r;
char **argv, **calcpr;
- int argc, xsize, ysize, i;
+ int argc, status, xsize, ysize, i;
double ymin, ymax;
if (create_args("graph", args, &argc, &argv) < 0)
return NULL;
- if (rrd_graph(argc, argv, &calcpr, &xsize, &ysize, NULL, &ymin, &ymax) ==
- -1) {
+ Py_BEGIN_ALLOW_THREADS
+ status = rrd_graph(argc, argv, &calcpr, &xsize, &ysize, NULL, &ymin, &ymax);
+ Py_END_ALLOW_THREADS
+
+ if (status == -1) {
PyErr_SetString(ErrorObject, rrd_get_error());
rrd_clear_error();
r = NULL;
{
PyObject *r;
char **argv;
- int argc;
+ int argc, status;
if (create_args("tune", args, &argc, &argv) < 0)
return NULL;
- if (rrd_tune(argc, argv) == -1) {
+ Py_BEGIN_ALLOW_THREADS
+ status = rrd_tune(argc, argv);
+ Py_END_ALLOW_THREADS
+
+ if (status == -1) {
PyErr_SetString(ErrorObject, rrd_get_error());
rrd_clear_error();
r = NULL;
if (create_args("first", args, &argc, &argv) < 0)
return NULL;
- if ((ts = rrd_first(argc, argv)) == -1) {
+ Py_BEGIN_ALLOW_THREADS
+ ts = rrd_first(argc, argv);
+ Py_END_ALLOW_THREADS
+
+ if (ts == -1) {
PyErr_SetString(ErrorObject, rrd_get_error());
rrd_clear_error();
r = NULL;
if (create_args("last", args, &argc, &argv) < 0)
return NULL;
- if ((ts = rrd_last(argc, argv)) == -1) {
+ Py_BEGIN_ALLOW_THREADS
+ ts = rrd_last(argc, argv);
+ Py_END_ALLOW_THREADS
+
+ if (ts == -1) {
PyErr_SetString(ErrorObject, rrd_get_error());
rrd_clear_error();
r = NULL;
if (create_args("resize", args, &argc, &argv) < 0)
return NULL;
- if ((ts = rrd_resize(argc, argv)) == -1) {
+ Py_BEGIN_ALLOW_THREADS
+ ts = rrd_resize(argc, argv);
+ Py_END_ALLOW_THREADS
+
+ if (ts == -1) {
PyErr_SetString(ErrorObject, rrd_get_error());
rrd_clear_error();
r = NULL;
if (create_args("info", args, &argc, &argv) < 0)
return NULL;
- if ((data = rrd_info(argc, argv)) == NULL) {
+ Py_BEGIN_ALLOW_THREADS
+ data = rrd_info(argc, argv);
+ Py_END_ALLOW_THREADS
+
+ if (data == NULL) {
PyErr_SetString(ErrorObject, rrd_get_error());
rrd_clear_error();
r = NULL;
if (create_args("graphv", args, &argc, &argv) < 0)
return NULL;
- if ((data = rrd_graph_v(argc, argv)) == NULL) {
+ Py_BEGIN_ALLOW_THREADS
+ data = rrd_graph_v(argc, argv);
+ Py_END_ALLOW_THREADS
+
+ if (data == NULL) {
PyErr_SetString(ErrorObject, rrd_get_error());
rrd_clear_error();
r = NULL;
if (create_args("updatev", args, &argc, &argv) < 0)
return NULL;
- if ((data = rrd_update_v(argc, argv)) == NULL) {
+ Py_BEGIN_ALLOW_THREADS
+ data = rrd_update_v(argc, argv);
+ Py_END_ALLOW_THREADS
+
+ if (data == NULL) {
PyErr_SetString(ErrorObject, rrd_get_error());
rrd_clear_error();
r = NULL;
PyObject * args)
{
PyObject *r;
- int argc;
+ int argc, status;
char **argv;
if (create_args("flushcached", args, &argc, &argv) < 0)
return NULL;
- if (rrd_flushcached(argc, argv) != 0) {
+ Py_BEGIN_ALLOW_THREADS
+ status = rrd_flushcached(argc, argv);
+ Py_END_ALLOW_THREADS
+
+ if (status != 0) {
PyErr_SetString(ErrorObject, rrd_get_error());
rrd_clear_error();
r = NULL;
PyObject * args)
{
PyObject *r;
- int argc, xsize;
+ int argc, status, xsize;
char **argv, **legend_v;
time_t start, end;
unsigned long step, col_cnt;
if (create_args("xport", args, &argc, &argv) < 0)
return NULL;
- if (rrd_xport(argc, argv, &xsize, &start, &end,
- &step, &col_cnt, &legend_v, &data) == -1) {
+ Py_BEGIN_ALLOW_THREADS
+ status = rrd_xport(argc, argv, &xsize, &start, &end, &step, &col_cnt, &legend_v, &data);
+ Py_END_ALLOW_THREADS
+
+ if (status == -1) {
PyErr_SetString(ErrorObject, rrd_get_error());
rrd_clear_error();
r = NULL;
PyObject * args)
{
PyObject *r;
- int argc;
+ int argc, status;
char **argv;
if (create_args("dump", args, &argc, &argv) < 0)
return NULL;
- if (rrd_dump(argc, argv) != 0) {
+ Py_BEGIN_ALLOW_THREADS
+ status = rrd_dump(argc, argv);
+ Py_END_ALLOW_THREADS
+
+ if (status != 0) {
PyErr_SetString(ErrorObject, rrd_get_error());
rrd_clear_error();
r = NULL;