{ "info": { "author": "Mohammed Firdaus", "author_email": "firdaus.halim@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Python framework for Cadence Workflow Service\n\n[Cadence](https://github.com/uber/cadence) is a workflow engine developed at Uber Engineering. With this framework, workflows and activities managed by Cadence can be implemented in Python code.\n\nStatus: Experimental - target production release in September 2019\n\n## Hello World Sample\n\n```\nimport sys\nimport logging\nfrom cadence.activity_method import activity_method\nfrom cadence.workerfactory import WorkerFactory\nfrom cadence.workflow import workflow_method, Workflow, WorkflowClient\n\nlogging.basicConfig(level=logging.DEBUG)\n\nTASK_LIST = \"HelloActivity-python-tasklist\"\nDOMAIN = \"sample\"\n\n\n# Activities Interface\nclass GreetingActivities:\n @activity_method(task_list=TASK_LIST, schedule_to_close_timeout_seconds=2)\n def compose_greeting(self, greeting: str, name: str) -> str:\n raise NotImplementedError\n\n\n# Activities Implementation\nclass GreetingActivitiesImpl:\n def compose_greeting(self, greeting: str, name: str):\n return greeting + \" \" + name + \"!\"\n\n\n# Workflow Interface\nclass GreetingWorkflow:\n @workflow_method(execution_start_to_close_timeout_seconds=10, task_list=TASK_LIST)\n def get_greeting(self, name: str) -> str:\n raise NotImplementedError\n\n\n# Workflow Implementation\nclass GreetingWorkflowImpl:\n\n def __init__(self):\n self.greeting_activities: GreetingActivities = Workflow.new_activity_stub(GreetingActivities)\n\n @workflow_method(impl=True)\n async def get_greeting(self, name):\n return await self.greeting_activities.compose_greeting(\"Hello\", name)\n\n\nif __name__ == '__main__':\n factory = WorkerFactory(\"localhost\", 7933, DOMAIN)\n worker = factory.new_worker(TASK_LIST)\n worker.register_activities_implementation(GreetingActivitiesImpl(), \"GreetingActivities\")\n worker.register_workflow_implementation_type(GreetingWorkflowImpl, \"GreetingWorkflow\")\n factory.start()\n\n client = WorkflowClient.new_client(domain=DOMAIN)\n greeting_workflow: GreetingWorkflow = client.new_workflow_stub(GreetingWorkflow)\n result = greeting_workflow.get_greeting(\"Python\")\n print(result)\n\n print(\"Stopping workers....\")\n worker.stop()\n print(\"Workers stopped...\")\n sys.exit(0)\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/firdaus/cadence-python", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "cadence-client", "package_url": "https://pypi.org/project/cadence-client/", "platform": "", "project_url": "https://pypi.org/project/cadence-client/", "project_urls": { "Homepage": "https://github.com/firdaus/cadence-python" }, "release_url": "https://pypi.org/project/cadence-client/0.0.1/", "requires_dist": [ "more-itertools (>=7.0.0)", "thriftrw (>=1.7.2)" ], "requires_python": "", "summary": "Python framework for Cadence Workflow Service", "version": "0.0.1" }, "last_serial": 5329695, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "4097212afab41d378523d80a0e063b57", "sha256": "e26887f1eed3b36a87b6ea9fb6e5f22d26cfe8fbd7c2488fd86306e0436878b6" }, "downloads": -1, "filename": "cadence_client-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4097212afab41d378523d80a0e063b57", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43274, "upload_time": "2019-05-29T01:08:35", "url": "https://files.pythonhosted.org/packages/57/c0/94d8f1f7e59bc0d07bd86849d9ed6caab7a1d78fabd07f172c37db03dc11/cadence_client-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6f7a9c9392906a26bb99c3913d3b5e76", "sha256": "eb71bcc098ae5df12f7527e77c818c5902d40769afbc68b5efbbd9362a154e94" }, "downloads": -1, "filename": "cadence-client-0.0.1.tar.gz", "has_sig": false, "md5_digest": "6f7a9c9392906a26bb99c3913d3b5e76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36438, "upload_time": "2019-05-29T01:08:38", "url": "https://files.pythonhosted.org/packages/e4/b2/50eacb3e31ed6a65cadddd83374843cae915994979792052d4eca22b1e6e/cadence-client-0.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4097212afab41d378523d80a0e063b57", "sha256": "e26887f1eed3b36a87b6ea9fb6e5f22d26cfe8fbd7c2488fd86306e0436878b6" }, "downloads": -1, "filename": "cadence_client-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4097212afab41d378523d80a0e063b57", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 43274, "upload_time": "2019-05-29T01:08:35", "url": "https://files.pythonhosted.org/packages/57/c0/94d8f1f7e59bc0d07bd86849d9ed6caab7a1d78fabd07f172c37db03dc11/cadence_client-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6f7a9c9392906a26bb99c3913d3b5e76", "sha256": "eb71bcc098ae5df12f7527e77c818c5902d40769afbc68b5efbbd9362a154e94" }, "downloads": -1, "filename": "cadence-client-0.0.1.tar.gz", "has_sig": false, "md5_digest": "6f7a9c9392906a26bb99c3913d3b5e76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36438, "upload_time": "2019-05-29T01:08:38", "url": "https://files.pythonhosted.org/packages/e4/b2/50eacb3e31ed6a65cadddd83374843cae915994979792052d4eca22b1e6e/cadence-client-0.0.1.tar.gz" } ] }