{"id":21942079,"url":"https://github.com/richardzcode/f2s2","last_synced_at":"2025-03-22T15:25:18.637Z","repository":{"id":10338848,"uuid":"12472296","full_name":"richardzcode/f2s2","owner":"richardzcode","description":null,"archived":false,"fork":false,"pushed_at":"2013-08-30T03:00:08.000Z","size":108,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-27T15:44:33.317Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"kriszyp/cpm","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/richardzcode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-08-29T22:04:21.000Z","updated_at":"2014-05-20T18:08:02.000Z","dependencies_parsed_at":"2022-08-31T02:00:42.114Z","dependency_job_id":null,"html_url":"https://github.com/richardzcode/f2s2","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardzcode%2Ff2s2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardzcode%2Ff2s2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardzcode%2Ff2s2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardzcode%2Ff2s2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richardzcode","download_url":"https://codeload.github.com/richardzcode/f2s2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244976078,"owners_count":20541406,"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":[],"created_at":"2024-11-29T03:16:24.543Z","updated_at":"2025-03-22T15:25:18.619Z","avatar_url":"https://github.com/richardzcode.png","language":"Python","readme":"f2s2\n====\n\n## Version\n\n0.0.1\n\n## Intro\n\nf2s2, funnel for suck service, is to make sure same requests at one time only hit server once. It is inspired by a complex/expensive CMS. I was very suprised that its caching layer does not prevent same request fall through at the same time. So cache miss on one hot content would potentially crash its content manager. \n\nOf course Varnish or Nginx etc. can accomplish the job. This is more of a small execise for me on Python.\n\n## Usage\n\n1. Modify config.py. For example\n```\n{\n    'localPort': 8888,\n    'remoteHost': 'http://google.com',\n}\n```\n2. Run:\n```\npython f2s2.py\n```\n3. Test:\n```\nab -n 100 -c 20 http://localhost:8888/\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichardzcode%2Ff2s2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichardzcode%2Ff2s2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichardzcode%2Ff2s2/lists"}