{"id":13937691,"url":"https://github.com/itamarst/crochet","last_synced_at":"2025-05-16T07:07:04.834Z","repository":{"id":7493116,"uuid":"8842308","full_name":"itamarst/crochet","owner":"itamarst","description":"Crochet: use Twisted anywhere!","archived":false,"fork":false,"pushed_at":"2024-09-03T22:25:56.000Z","size":403,"stargazers_count":237,"open_issues_count":21,"forks_count":35,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-06T17:11:22.896Z","etag":null,"topics":["async","async-python","asynchronous","asynchronous-jobs","asynchronous-tasks","python","twisted"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itamarst.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2013-03-17T21:59:32.000Z","updated_at":"2025-03-24T11:17:15.000Z","dependencies_parsed_at":"2024-05-02T23:04:08.721Z","dependency_job_id":"fe82c290-f882-4476-a237-482547d644c6","html_url":"https://github.com/itamarst/crochet","commit_stats":{"total_commits":314,"total_committers":18,"mean_commits":"17.444444444444443","dds":0.3885350318471338,"last_synced_commit":"9ca30d02f4dc2376545aea14cbed52fc7880c6ba"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itamarst%2Fcrochet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itamarst%2Fcrochet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itamarst%2Fcrochet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itamarst%2Fcrochet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itamarst","download_url":"https://codeload.github.com/itamarst/crochet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253154983,"owners_count":21862621,"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":["async","async-python","asynchronous","asynchronous-jobs","asynchronous-tasks","python","twisted"],"created_at":"2024-08-07T23:03:47.343Z","updated_at":"2025-05-16T07:06:59.825Z","avatar_url":"https://github.com/itamarst.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"Crochet: Use Twisted anywhere!\n==============================\n\nCrochet is an MIT-licensed library that makes it easier to use Twisted from\nregular blocking code. Some use cases include:\n\n* Easily use Twisted from a blocking framework like Django or Flask.\n* Write a library that provides a blocking API, but uses Twisted for its\n  implementation.\n* Port blocking code to Twisted more easily, by keeping a backwards\n  compatibility layer.\n* Allow normal Twisted programs that use threads to interact with Twisted more\n  cleanly from their threaded parts. For example, this can be useful when using\n  Twisted as a `WSGI container`_.\n\n.. _WSGI container: https://twistedmatrix.com/documents/current/web/howto/web-in-60/wsgi.html\n\nCrochet is maintained by Itamar Turner-Trauring.\n\n  **Note:** Crochet development is pretty slow these days because mostly it **Just Works**. PyPI shows about 30,000 downloads a month, so existing users seem happy: https://pypistats.org/packages/crochet\n\nYou can install Crochet by running::\n\n  $ pip install crochet\n\nDownloads are available on `PyPI`_.\n\nDocumentation can be found on `Read The Docs`_.\n\nBugs and feature requests should be filed at the project `Github page`_.\n\n.. _Read the Docs: https://crochet.readthedocs.org/\n.. _Github page: https://github.com/itamarst/crochet/\n.. _PyPI: https://pypi.python.org/pypi/crochet\n\n\nAPI and features\n================\n\nCrochet supports Python 3.8, 3.9, 3.10, and 3.11 as well as PyPy3.\n\nCrochet provides the following basic APIs:\n\n* Allow blocking code to call into Twisted and block until results are available\n  or a timeout is hit, using the ``crochet.wait_for`` decorator.\n* A lower-level API (``crochet.run_in_reactor``) allows blocking code to run\n  code \"in the background\" in the Twisted thread, with the ability to repeatedly\n  check if it's done.\n\nCrochet will do the following on your behalf in order to enable these APIs:\n\n* Transparently start Twisted's reactor in a thread it manages.\n* Shut down the reactor automatically when the process' main thread finishes.\n* Hook up Twisted's log system to the Python standard library ``logging``\n  framework. Unlike Twisted's built-in ``logging`` bridge, this includes\n  support for blocking `Handler` instances.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitamarst%2Fcrochet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitamarst%2Fcrochet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitamarst%2Fcrochet/lists"}