Skip to content

Commit 857c3d7

Browse files
committed
feat: optimize robyn
1 parent ccfb40b commit 857c3d7

File tree

5 files changed

+13
-11
lines changed

5 files changed

+13
-11
lines changed

Cargo.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,13 @@ io-uring = ["actix-web/experimental-io-uring"]
4444

4545
[profile.release]
4646
codegen-units = 1
47-
lto = true
47+
lto = "fat"
4848
panic = "abort"
4949
strip = true
50+
opt-level = 3
51+
52+
[profile.release.build-override]
53+
opt-level = 3
5054

5155
[package.metadata.maturin]
5256
name = "robyn"

src/executors/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ where
3030
let function_args: PyObject = function_args
3131
.clone()
3232
.into_pyobject(py)
33-
.unwrap()
33+
.map_err(|e| PyErr::new::<pyo3::exceptions::PyRuntimeError, _>(format!("Failed to convert args: {:?}", e)))?
3434
.into_any()
3535
.unbind();
3636
debug!("Function args: {:?}", function_args);

src/server.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -545,13 +545,11 @@ async fn index(
545545
response = match execute_middleware_function(&response, &after_middleware).await {
546546
Ok(MiddlewareReturn::Request(_)) => {
547547
error!("After middleware returned a request");
548-
return Response::internal_server_error(Some(&response.headers));
548+
return Response::internal_server_error(None);
549549
}
550550
Ok(MiddlewareReturn::Response(r)) => {
551-
let response = r;
552-
553-
debug!("Response returned: {:?}", response);
554-
response
551+
debug!("Response returned: {:?}", r);
552+
r
555553
}
556554
Err(e) => {
557555
error!(

src/types/request.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ impl<'py> IntoPyObject<'py> for Request {
4141
let body = if self.body.is_empty() {
4242
PyString::new(py, "").into_any()
4343
} else {
44-
match String::from_utf8(self.body.clone()) {
45-
Ok(s) => s.into_pyobject(py)?.into_any(),
46-
Err(_) => self.body.into_pyobject(py)?.into_any(),
44+
match std::str::from_utf8(&self.body) {
45+
Ok(s) => PyString::new(py, s).into_any(),
46+
Err(_) => PyBytes::new(py, &self.body).into_any(),
4747
}
4848
};
4949

src/types/response.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ impl Responder for Response {
2828

2929
fn respond_to(self, _req: &HttpRequest) -> HttpResponse<Self::Body> {
3030
let mut response_builder =
31-
HttpResponseBuilder::new(StatusCode::from_u16(self.status_code).unwrap());
31+
HttpResponseBuilder::new(StatusCode::from_u16(self.status_code).unwrap_or(StatusCode::INTERNAL_SERVER_ERROR));
3232
apply_hashmap_headers(&mut response_builder, &self.headers);
3333
response_builder.body(self.description)
3434
}

0 commit comments

Comments
 (0)