# InteractionFree for Python
[](https://github.com/hwaipy/InteractionFreePy/actions?query=workflow%3ATests)
[](https://interactionfreepy.readthedocs.io/en/latest/?badge=latest)
[](https://pypi.org/project/interactionfreepy/)
[](https://pypi.org/project/interactionfreepy/)
[](https://github.com/hwaipy/InteractionFreePy/tree/python-coverage-comment-action-data)
[InteractionFree]() is a remote procedure call (RPC) protocol based on [ZeroMQ](https://zeromq.org). It allows the developers to build their own distributed and cross-languige program easily. The protocol is config-less and extremly easy to use. Currently, [MessagePack](https://msgpack.org) is used for binary serialization.
Please refer to [here](https://interactionfreepy.readthedocs.io/en/latest/index.html) for the full doc.
## Quick Start
**Install**
```shell
$ pip install interactionfreepy
```
**Start the broker**
```python
from interactionfreepy import IFBroker
broker = IFBroker('tcp://*:port')
IFLoop.join()
```
replace `port` to any port number that is available.
`IFLoop.join()` is a utility function to prevent the program from finishing.
**Start a server**
```python
from interactionfreepy import IFWorker
class Target():
def tick(self, message):
return "tack %s" % message
worker = IFWorker('tcp://address:port', 'TargetService', Target())
IFLoop.join()
```
replace `address` and `port` to the server's net address and port.
**Start a client**
```python
from interactionfreepy import IFWorker
client = IFWorker('tcp://address:port')
print(client.TargetService.tick('now'))
```
Raw data
{
"_id": null,
"home_page": "https://github.com/hwaipy/InteractionFreePy",
"name": "interactionfreepy",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "msgpack, zeromq, zmq, 0mq, rcp, cross-languige",
"author": "Hwaipy",
"author_email": "hwaipy@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/5f/71/9362ebc9735e5e1abf4dd92bb407d5459399512357a1f6962c1dc95a0fd1/interactionfreepy-1.8.1.tar.gz",
"platform": null,
"description": "\n# InteractionFree for Python\n\n[](https://github.com/hwaipy/InteractionFreePy/actions?query=workflow%3ATests)\n[](https://interactionfreepy.readthedocs.io/en/latest/?badge=latest)\n[](https://pypi.org/project/interactionfreepy/)\n[](https://pypi.org/project/interactionfreepy/)\n[](https://github.com/hwaipy/InteractionFreePy/tree/python-coverage-comment-action-data)\n\n[InteractionFree]() is a remote procedure call (RPC) protocol based on [ZeroMQ](https://zeromq.org). It allows the developers to build their own distributed and cross-languige program easily. The protocol is config-less and extremly easy to use. Currently, [MessagePack](https://msgpack.org) is used for binary serialization. \n\nPlease refer to [here](https://interactionfreepy.readthedocs.io/en/latest/index.html) for the full doc.\n\n\n## Quick Start\n\n **Install**\n\n```shell\n$ pip install interactionfreepy\n```\n\n**Start the broker**\n\n```python\nfrom interactionfreepy import IFBroker\n\nbroker = IFBroker('tcp://*:port')\nIFLoop.join()\n```\n\nreplace `port` to any port number that is available.\n\n`IFLoop.join()` is a utility function to prevent the program from finishing.\n\n**Start a server**\n\n```python\nfrom interactionfreepy import IFWorker\n\nclass Target():\n def tick(self, message):\n return \"tack %s\" % message\n\nworker = IFWorker('tcp://address:port', 'TargetService', Target())\nIFLoop.join()\n```\n\nreplace `address` and `port` to the server's net address and port.\n\n**Start a client**\n\n```python\nfrom interactionfreepy import IFWorker\n\nclient = IFWorker('tcp://address:port')\nprint(client.TargetService.tick('now'))\n```\n\n",
"bugtrack_url": null,
"license": "gpl-3.0",
"summary": "A intuitive and cross-languige RCP lib for Python.",
"version": "1.8.1",
"project_urls": {
"Download": "https://github.com/hwaipy/InteractionFreePy/archive/v1.8.1.tar.gz",
"Homepage": "https://github.com/hwaipy/InteractionFreePy"
},
"split_keywords": [
"msgpack",
" zeromq",
" zmq",
" 0mq",
" rcp",
" cross-languige"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "38feeb1fb3076af51ed7f6e67d0f0c8e93920581509fdff2f54975d14df128d3",
"md5": "c8194374194858e16b56af17776bac0d",
"sha256": "b54a6eaca50eb4ca8c883ef2d8dd1c7a13bdd93ab0e46ee27ea6cab6535a2b47"
},
"downloads": -1,
"filename": "interactionfreepy-1.8.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c8194374194858e16b56af17776bac0d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 36280,
"upload_time": "2025-10-09T17:37:26",
"upload_time_iso_8601": "2025-10-09T17:37:26.152781Z",
"url": "https://files.pythonhosted.org/packages/38/fe/eb1fb3076af51ed7f6e67d0f0c8e93920581509fdff2f54975d14df128d3/interactionfreepy-1.8.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5f719362ebc9735e5e1abf4dd92bb407d5459399512357a1f6962c1dc95a0fd1",
"md5": "00993314aa1673ecd949325ab89fb07c",
"sha256": "dd7f6d295e99a099ddf269a8a767a6ade230c86b5f3e4906f8529b672608dc01"
},
"downloads": -1,
"filename": "interactionfreepy-1.8.1.tar.gz",
"has_sig": false,
"md5_digest": "00993314aa1673ecd949325ab89fb07c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 32036,
"upload_time": "2025-10-09T17:37:26",
"upload_time_iso_8601": "2025-10-09T17:37:26.989838Z",
"url": "https://files.pythonhosted.org/packages/5f/71/9362ebc9735e5e1abf4dd92bb407d5459399512357a1f6962c1dc95a0fd1/interactionfreepy-1.8.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-09 17:37:26",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "hwaipy",
"github_project": "InteractionFreePy",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"requirements": [
{
"name": "msgpack",
"specs": []
},
{
"name": "tornado",
"specs": []
},
{
"name": "pyzmq",
"specs": []
}
],
"lcname": "interactionfreepy"
}