Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert "replace msgpack-rpc-python with mprpc" - mprpc does not install on Python 3.11 #4

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

jnareb
Copy link
Contributor

@jnareb jnareb commented Jul 22, 2024

This reverts commit de35f64.

Unfortunately, the mprpc package fails to install with Python 3.11.x most probably because of the changes in Cython.

  × Building wheel for mprpc (pyproject.toml) did not run successfully.
  │ exit code: 1
  [...]
        mprpc/client.c:181:12: fatal error: longintrepr.h: No such file or directory
        181 |   #include "longintrepr.h"
            |            ^~~~~~~~~~~~~~~
      compilation terminated.

The solution would be to update the package, but it is no longer developed. The GitHub repository for mprpc project (https://github.com/studio-ousia/mprpc) got archived by the owner on Dec 27, 2022:

NOTICE: This library is not actively maintained. Please consider
using other alternatives such as gRPC.

There are other Python packages for MessagePack RPC than msgpack-rpc-python and mprpc, but they have their own problems.

  • gRPC is heavily into *.proto files as universal cross-language interface definition, and would require rewriting rb_call
  • aiorpc is under developed (4 - Beta), and should not to be considered to have a stable API; additionally, the README says that benchmarks show that it slightly underperforms official MessagePack RPC (0.7x slower)
  • rpc-msgpack claims to be updated version for MessagePack RPC for Python, but its PyPI page (https://pypi.org/project/rpc-msgpack/) is very sparse on details
  • tinyrpc now supports MessagePack (tinyprc[msgpack]), but it was originally JSON-RPC and ZMQ library; it looks like most actively developed beside gRPC
  • txmsgpackrpc repository was archived on May 31, 2022
  • msgpack-rpc-python (MessagePack RPC for Python) got its last release on Mar 14, 2018 - but as pure Python package has no problems being installed with Python 3.11
  • lotrpc is in 3 - Alpha, last release from Jan 23, 2020; repo archived on Aug 5, 2023
  • spyne is transport and architecture agnostic rpc library; last release 2022 but I'm not sure if it is a good match for rb_call: no support for plan RPC

It looks like best replacement would be tinyrpc, assuming that is performance is not worse than msgpack-rpc-python... but it would require some changes (though not as much as switching to gRPC would).

This reverts commit de35f64.

Unfortunately, the mprpc package fails to install with Python 3.11.x
most probably because of the changes in Cython.

  × Building wheel for mprpc (pyproject.toml) did not run successfully.
  │ exit code: 1
  [...]
        mprpc/client.c:181:12: fatal error: longintrepr.h: No such file or directory
        181 |   #include "longintrepr.h"
            |            ^~~~~~~~~~~~~~~
      compilation terminated.

The solution would be to update the package, but it is no longer developed.
The GitHub repository for mprpc project (https://github.com/studio-ousia/mprpc)
got archived by the owner on Dec 27, 2022:

  NOTICE: This library is not actively maintained. Please consider
  using other alternatives such as gRPC.

There are other Python packages for MessagePack RPC than msgpack-rpc-python
and mprpc, but they have their own problems.

- gRPC is heavily into *.proto files as universal cross-language interface
  definition, and would require rewriting rb_call
- aiorpc is under developed (4 - Beta), and should not to be considered to
  have a stable API; additionally, the README says that benchmarks show that it
  slightly underperforms official MessagePack RPC (0.7x slower)
- rpc-msgpack claims to be updated version for MessagePack RPC for Python,
  but its PyPI page (https://pypi.org/project/rpc-msgpack/) is very sparse
  on details
- tinyrpc now supports MessagePack (tinyprc[msgpack]), but it was originally
  JSON-RPC and ZMQ library; it looks like most actively developed beside gRPC
- txmsgpackrpc repository was archived on May 31, 2022
- msgpack-rpc-python (MessagePack RPC for Python) got its last release
  on Mar 14, 2018 - but as pure Python package has no problems being installed
  with Python 3.11
- lotrpc is in 3 - Alpha, last release from Jan 23, 2020; repo archived
  on Aug 5, 2023
- spyne is transport and architecture agnostic rpc library; last release 2022
  but I'm not sure if it is a good match for rb_call: no support for plan RPC

It looks like best replacement would be tinyrpc, assuming that is performance
is not worse than msgpack-rpc-python... but it would require some changes
(though not as much as switching to gRPC would).
We are back to using msgpack-rpc-python in place of mprpc.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant