{"id":46739156,"url":"https://github.com/malvex/sheppy","last_synced_at":"2026-03-09T17:13:43.325Z","repository":{"id":310600671,"uuid":"1039844099","full_name":"malvex/sheppy","owner":"malvex","description":"A modern, fast, and easy to use task queue system for async Python","archived":false,"fork":false,"pushed_at":"2026-02-25T16:56:10.000Z","size":2547,"stargazers_count":14,"open_issues_count":3,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-25T20:11:13.251Z","etag":null,"topics":["async","distributed","fastapi","job","pydantic","python","python3","queue","task"],"latest_commit_sha":null,"homepage":"https://docs.sheppy.org/","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/malvex.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-18T04:23:59.000Z","updated_at":"2026-02-25T16:56:15.000Z","dependencies_parsed_at":"2025-08-19T06:17:10.614Z","dependency_job_id":"c7249745-9b79-40e3-9546-ccc7a35fc023","html_url":"https://github.com/malvex/sheppy","commit_stats":null,"previous_names":["malvex/sheppy"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/malvex/sheppy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malvex%2Fsheppy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malvex%2Fsheppy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malvex%2Fsheppy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malvex%2Fsheppy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/malvex","download_url":"https://codeload.github.com/malvex/sheppy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/malvex%2Fsheppy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30304034,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T14:33:48.460Z","status":"ssl_error","status_checked_at":"2026-03-09T14:33:48.027Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","distributed","fastapi","job","pydantic","python","python3","queue","task"],"created_at":"2026-03-09T17:13:42.602Z","updated_at":"2026-03-09T17:13:43.312Z","avatar_url":"https://github.com/malvex.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sheppy 🐕\n\nDocumentation: \u003ca href=\"https://docs.sheppy.org\" target=\"_blank\"\u003ehttps://docs.sheppy.org\u003c/a\u003e\n\n---\n\n## What is Sheppy?\n\nSheppy is an async-native task queue designed to be simple enough to understand completely, yet powerful enough to handle millions of tasks in production. Built on asyncio from the ground up and uses blocking waits instead of polling. Sheppy scales from the smallest deployments to large distributed systems by simply launching more worker processes.\n\n### Core Principles\n\n- **Async Native**: Built on asyncio from the ground up\n- **Simplicity**: Two main concepts - `@task` decorator and `Queue`\n- **Low Latency**: Blocking reads instead of polling\n- **Type Safety**: Full Pydantic integration for validation and serialization\n- **Easy Scaling**: Just run more workers with `sheppy work`\n- **No Magic**: Clear and understandable implementation\n\n## TL;DR Quick Start\n\nThis is all you need to know:\n\n```python\nimport asyncio\nfrom datetime import datetime, timedelta\nfrom sheppy import Queue, task, RedisBackend\n\nqueue = Queue(RedisBackend(\"redis://127.0.0.1:6379\"))\n\n@task\nasync def say_hello(to: str) -\u003e str:\n    s = f\"Hello, {to}!\"\n    print(s)\n    return s\n\nasync def main():\n    t1 = say_hello(\"World\")\n    await queue.add(t1)\n    await queue.add(say_hello(\"Moon\"))\n    await queue.schedule(say_hello(\"Patient Person\"), at=timedelta(seconds=10))  # runs in 10 seconds from now\n    await queue.schedule(say_hello(\"New Year\"), at=datetime.fromisoformat(\"2026-01-01 00:00:00 +00:00\"))\n\n    # await the task completion\n    updated_task = await queue.wait_for(t1)\n\n    if updated_task.error:\n        print(f\"Task failed with error: {updated_task.error}\")\n    elif updated_task.status == 'completed':\n        print(f\"Task succeed with result: {updated_task.result}\")\n        assert updated_task.result == \"Hello, World!\"\n    else:\n        # note: this won't happen because wait_for doesn't return pending tasks\n        print(\"Task is still pending!\")\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\nRun it:\n\n```bash\n# run the app:\npython examples/tldr.py  # nothing will happen because worker isn't running\n\n# in another terminal, you can list queued tasks:\nsheppy task list  # (shows 2 pending and 2 scheduled tasks)\n\n# run worker process to process the tasks\nsheppy work  # (you should see the tasks to get processed, and the app should finish!)\n```\n\nFor more details, see the \u003ca href=\"https://docs.sheppy.org/getting-started/\" target=\"_blank\"\u003eGetting Started Guide\u003c/a\u003e.\n\n## Requirements\n\n- Python 3.10+\n- Redis 6.2+\n\n## Developing\n\n```bash\ngit clone https://github.com/malvex/sheppy.git\ncd sheppy\nuv sync --group dev\n\npytest -v tests/ --tb=short\nmypy src/\nruff check src/\n```\n\n## License\n\nThis project is licensed under the terms of the MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmalvex%2Fsheppy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmalvex%2Fsheppy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmalvex%2Fsheppy/lists"}