# InteractionFree for Python
[![](https://img.shields.io/github/workflow/status/hwaipy/InteractionFreePy/Tests)](https://github.com/hwaipy/InteractionFreePy/actions?query=workflow%3ATests)
[![](https://img.shields.io/pypi/v/interactionfreepy)](https://pypi.org/project/interactionfreepy/)
[![](https://img.shields.io/pypi/pyversions/interactionfreepy)](https://pypi.org/project/interactionfreepy/)
[![Coverage badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/hwaipy/InteractionFreePy/python-coverage-comment-action-data/endpoint.json)](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, [Msgpack](https://msgpack.org) is used for binary serialization. InteractionFree implementation is already available in various languages (including Scala, Javascript, Arduino). More infomation will be available soon.
- InteractionFree specification: to be drafted.
## Quick Start
**Install**
```shell
$ pip install interactionfreepy
```
**Start the server**
```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 worker**
```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": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "msgpack,zeromq,zmq,0mq,rcp,cross-languige",
"author": "Hwaipy",
"author_email": "hwaipy@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/04/fe/441a265d99de7826fe9913ec182492324760057d3b0442277117d1f52baa/interactionfreepy-1.6.11.tar.gz",
"platform": null,
"description": "\n# InteractionFree for Python\n\n[![](https://img.shields.io/github/workflow/status/hwaipy/InteractionFreePy/Tests)](https://github.com/hwaipy/InteractionFreePy/actions?query=workflow%3ATests)\n[![](https://img.shields.io/pypi/v/interactionfreepy)](https://pypi.org/project/interactionfreepy/)\n[![](https://img.shields.io/pypi/pyversions/interactionfreepy)](https://pypi.org/project/interactionfreepy/)\n[![Coverage badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/hwaipy/InteractionFreePy/python-coverage-comment-action-data/endpoint.json)](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, [Msgpack](https://msgpack.org) is used for binary serialization. InteractionFree implementation is already available in various languages (including Scala, Javascript, Arduino). More infomation will be available soon.\n\n- InteractionFree specification: to be drafted.\n\n\n\n## Quick Start\n\n **Install**\n\n```shell\n$ pip install interactionfreepy\n```\n\n**Start the server**\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 worker**\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.6.11",
"project_urls": {
"Download": "https://github.com/hwaipy/InteractionFreePy/archive/v1.6.11.tar.gz",
"Homepage": "https://github.com/hwaipy/InteractionFreePy"
},
"split_keywords": [
"msgpack",
"zeromq",
"zmq",
"0mq",
"rcp",
"cross-languige"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2f5f9494ac9015bc3033a569e1f9d40419625a4ef67c93167d3c640b0f291931",
"md5": "5bca04b62379e00bd5b367c5c46140d4",
"sha256": "ba8a2c1d21631e2216551ec54d2e92c1aaec3433451116a69106c543dfa167b7"
},
"downloads": -1,
"filename": "interactionfreepy-1.6.11-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5bca04b62379e00bd5b367c5c46140d4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 34176,
"upload_time": "2024-01-30T05:37:24",
"upload_time_iso_8601": "2024-01-30T05:37:24.605590Z",
"url": "https://files.pythonhosted.org/packages/2f/5f/9494ac9015bc3033a569e1f9d40419625a4ef67c93167d3c640b0f291931/interactionfreepy-1.6.11-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "04fe441a265d99de7826fe9913ec182492324760057d3b0442277117d1f52baa",
"md5": "2c4943ef39b6510e6e968b199f6bc952",
"sha256": "7fd27c3ca4d2ddb0ea144591351d71892e6bf40af7541013ee004a41e62d761b"
},
"downloads": -1,
"filename": "interactionfreepy-1.6.11.tar.gz",
"has_sig": false,
"md5_digest": "2c4943ef39b6510e6e968b199f6bc952",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 30160,
"upload_time": "2024-01-30T05:37:25",
"upload_time_iso_8601": "2024-01-30T05:37:25.966179Z",
"url": "https://files.pythonhosted.org/packages/04/fe/441a265d99de7826fe9913ec182492324760057d3b0442277117d1f52baa/interactionfreepy-1.6.11.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-30 05:37:25",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "hwaipy",
"github_project": "InteractionFreePy",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"requirements": [],
"lcname": "interactionfreepy"
}