From daaf8bdc7007ad8d567d01e23e05989142295fe1 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Fri, 6 Mar 2020 12:30:19 +1000 Subject: [PATCH] release the GIL during a DB request --- rspy/src/lib.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/rspy/src/lib.rs b/rspy/src/lib.rs index 78b222c88..8d74ed3c9 100644 --- a/rspy/src/lib.rs +++ b/rspy/src/lib.rs @@ -76,11 +76,12 @@ impl Backend { fn db_command(&mut self, py: Python, input: &PyBytes) -> PyResult { let in_bytes = input.as_bytes(); - let out_string = self - .backend - .db_command(in_bytes) - .map_err(|e| DBError::py_err(e.localized_description(&self.backend.i18n())))?; - + let out_res = py.allow_threads(move || { + self.backend + .db_command(in_bytes) + .map_err(|e| DBError::py_err(e.localized_description(&self.backend.i18n()))) + }); + let out_string = out_res?; let out_obj = PyBytes::new(py, out_string.as_bytes()); Ok(out_obj.into()) }