{"id":15924073,"url":"https://github.com/yusufcanb/reactive-robot","last_synced_at":"2025-09-06T12:32:29.699Z","repository":{"id":42471400,"uuid":"429944262","full_name":"yusufcanb/reactive-robot","owner":"yusufcanb","description":"Fastest way to turn your robot files into an event driven service. ⚡️🤖","archived":false,"fork":false,"pushed_at":"2024-03-05T23:27:50.000Z","size":142,"stargazers_count":9,"open_issues_count":3,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-17T06:50:24.711Z","etag":null,"topics":["event-driven","robotframework"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/reactive-robot/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yusufcanb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-19T21:55:26.000Z","updated_at":"2022-08-12T05:12:23.000Z","dependencies_parsed_at":"2024-10-29T01:40:47.790Z","dependency_job_id":"183485e4-76e5-45d9-8b53-11ce6422c424","html_url":"https://github.com/yusufcanb/reactive-robot","commit_stats":{"total_commits":63,"total_committers":3,"mean_commits":21.0,"dds":0.4444444444444444,"last_synced_commit":"d2562388a0ae196a4e4c54b816ed3dab0fff05dc"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusufcanb%2Freactive-robot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusufcanb%2Freactive-robot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusufcanb%2Freactive-robot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusufcanb%2Freactive-robot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yusufcanb","download_url":"https://codeload.github.com/yusufcanb/reactive-robot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231921573,"owners_count":18446364,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["event-driven","robotframework"],"created_at":"2024-10-06T21:04:47.866Z","updated_at":"2025-01-01T20:25:35.947Z","avatar_url":"https://github.com/yusufcanb.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Reactive Robot (⚡ 🤖)\r\n\r\n![pypi-badge](https://img.shields.io/pypi/v/reactive-robot)\r\n![stable](https://img.shields.io/static/v1?label=status\u0026message=alpha\u0026color=yellow)\r\n\r\n[![Robocon 2022](https://img.youtube.com/vi/UTwDfGYj3lw/0.jpg)](https://www.youtube.com/watch?v=UTwDfGYj3lw)\r\n\r\n\r\n## Mission\r\n\r\nThis project aims to turn Robot Framework projects into event-driven services using popular message brokers like RabbitMQ, Kafka or MQTT.\r\n\r\n## Installation\r\n\r\nYou can install reactive-robot into projects using pip;\r\n\r\n```\r\npip install reactive-robot\r\n```\r\n\r\n## Usage\r\n\r\nCreate a definition file called `reactive-robot.yml` then paste following configuration;\r\n\r\n```yaml\r\n\r\nservice_name: Example Robot Service\r\nservice_version: 1.0.0\r\n\r\nconnector:\r\n  driver: reactive_robot.connectors.mqtt.MQTTConnector\r\n  connection_url: mqtt://localhost:1883\r\n\r\nbindings:\r\n  - name: Example Task\r\n    topic: robot-queue\r\n    robot:\r\n      file: your-robots/examples.robot\r\n      args: null\r\n```\r\n\r\nYou're all set!\r\nNow all you have to do is start the service;\r\n\r\n```\r\npython -m reactive_robot serve\r\n```\r\n\r\nYou should see the following output;\r\n\r\n```\r\n$ python -m reactive_robot serve\r\n2021-11-27 18:22:58,517 - [INFO] - reactive_robot.serve::serve::40 - Using Robot Framework v4.1.2 (Python 3.10.0 on darwin)\r\n2021-11-27 18:22:58,518 - [INFO] - reactive_robot.serve::serve::47 - Event loop started. Waiting for events.\r\n```\r\n\r\nFinally publish a message to see your robots are running.\r\n\r\n```\r\npython tests/mqtt/publish.py localhost 1883\r\n```\r\n## Examples\r\n\r\nIn this section you can find example implementations with different message brokers;\r\nYou need **`docker`** and **`docker-compose`** in order to execute example projects.\r\n\r\n### Robot Service with Kafka Broker\r\n\r\nNavigate to the `examples/kafka`\r\n```\r\ncd examples/kafka\r\n```\r\n\r\nThen start containers with below; \r\n\r\n```\r\ndocker-compose up\r\n```\r\n\r\nFinally, trigger an event in basic topic to see your robots are running;\r\n\r\n```\r\ndocker-compose exec robot-service python /opt/service/publish.py basic \r\n```\r\n\r\n\r\n### Robot Service with MQTT Broker\r\n\r\nNavigate to the `examples/mqtt`\r\n```\r\ncd examples/mqtt\r\n```\r\n\r\nThen start containers with below; \r\n\r\n```\r\ndocker-compose up\r\n```\r\n\r\nFinally, trigger an event to see your robots are running;\r\n\r\n```\r\ndocker-compose exec mqtt-broker /opt/hivemq-4.7.2/tools/mqtt-cli/bin/mqtt pub --topic basic --message TEST_VAR:321\r\n```\r\n\r\n## Recipes\r\n\r\nIn the [examples/](examples) directory you can find example projects which implements all recipes below;\r\n\r\n### Dockerize your service\r\n\r\nHere you can find an example Dockerfile to convert your Robot Framework projects into dockerized event-driven service \r\n\r\n```dockerfile\r\nFROM robotframework/rfdocker\r\n\r\nWORKDIR /opt/service\r\n\r\nCOPY . /opt/service\r\nRUN pip install -r requirements.txt  # Your project dependencies.\r\n\r\n# reactive-robot setup\r\nCOPY reactive-robot.yml .\r\nRUN pip install reactive-robot\r\n\r\nCMD [\"python\", \"-m\", \"reactive-robot\", \"serve\"]\r\n```\r\n\r\nThen, we can build the image with following;\r\n\r\n```\r\ndocker build -t robot-service:1.0.0 .\r\n```\r\n\r\nFinally, run your service;\r\n\r\n```\r\ndocker run -it robot-service:1.0.0\r\n```\r\n\r\n\r\n## License\r\n\r\nDistributed under the Apache License 2.\r\nSee `LICENSE` for more information.\r\n\r\n## Contributing\r\n\r\nContributions are what make the open source community such an amazing place to be learn, inspire, and create.\r\nAny contributions are **appreciated**.\r\n\r\n1. Fork the Project\r\n2. Create your Feature Branch (`git checkout -b feature/some-feature`)\r\n3. Commit your Changes (`git commit -m 'some feature added'`)\r\n4. Push to the Branch (`git push origin feature/some-feature`)\r\n5. Open a Pull Request\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusufcanb%2Freactive-robot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyusufcanb%2Freactive-robot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusufcanb%2Freactive-robot/lists"}