{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":231433569,"defaultBranch":"main","name":"functions-framework-python","ownerLogin":"GoogleCloudPlatform","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2020-01-02T18:01:56.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/2810941?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1717397224.0","currentOid":""},"activityList":{"items":[{"before":"c3b40c7fec6069679abd25df1422a2bf186cfcbe","after":"b2fdf2dd1f8594e48464450089ca0ade891202e2","ref":"refs/heads/release-please--branches--main","pushedAt":"2024-06-03T06:47:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"release-please[bot]","name":null,"path":"/apps/release-please","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/40688?s=80&v=4"},"commit":{"message":"chore(main): release 3.7.1","shortMessageHtmlLink":"chore(main): release 3.7.1"}},{"before":"7691cfe1e8da8ed92512cb8e7e6dfb42c13ef069","after":null,"ref":"refs/heads/HKWinterhalter-patch-1","pushedAt":"2024-06-03T06:47:04.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"HKWinterhalter","name":null,"path":"/HKWinterhalter","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13093525?s=80&v=4"}},{"before":"02472e7315d0fd642db26441b3cb21f799906739","after":"94763d83fb931c16682acbc978c094de9f6b1aea","ref":"refs/heads/main","pushedAt":"2024-06-03T06:47:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"HKWinterhalter","name":null,"path":"/HKWinterhalter","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13093525?s=80&v=4"},"commit":{"message":"chore: Update blunderbuss.yml (#333)\n\n* Update blunderbuss.yml\r\n\r\n* chore: Update blunderbuss.yml\r\n\r\n* chore: Update blunderbuss.yml\r\n\r\nRemove assignees - to be replaced with other mechanism","shortMessageHtmlLink":"chore: Update blunderbuss.yml (#333)"}},{"before":"eb9abd035f4a5d59c792b95017bd4faae3a6decd","after":"7691cfe1e8da8ed92512cb8e7e6dfb42c13ef069","ref":"refs/heads/HKWinterhalter-patch-1","pushedAt":"2024-05-31T22:47:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"HKWinterhalter","name":null,"path":"/HKWinterhalter","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13093525?s=80&v=4"},"commit":{"message":"chore: Update blunderbuss.yml\n\nRemove assignees - to be replaced with other mechanism","shortMessageHtmlLink":"chore: Update blunderbuss.yml"}},{"before":"ea01da72802926df76aae355579c907d25b0aee6","after":"eb9abd035f4a5d59c792b95017bd4faae3a6decd","ref":"refs/heads/HKWinterhalter-patch-1","pushedAt":"2024-05-31T22:33:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"HKWinterhalter","name":null,"path":"/HKWinterhalter","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13093525?s=80&v=4"},"commit":{"message":"chore: Update blunderbuss.yml","shortMessageHtmlLink":"chore: Update blunderbuss.yml"}},{"before":null,"after":"ea01da72802926df76aae355579c907d25b0aee6","ref":"refs/heads/HKWinterhalter-patch-1","pushedAt":"2024-05-31T22:28:36.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"HKWinterhalter","name":null,"path":"/HKWinterhalter","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13093525?s=80&v=4"},"commit":{"message":"Update blunderbuss.yml","shortMessageHtmlLink":"Update blunderbuss.yml"}},{"before":"02472e7315d0fd642db26441b3cb21f799906739","after":"c3b40c7fec6069679abd25df1422a2bf186cfcbe","ref":"refs/heads/release-please--branches--main","pushedAt":"2024-05-22T17:25:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"release-please[bot]","name":null,"path":"/apps/release-please","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/40688?s=80&v=4"},"commit":{"message":"chore(main): release 3.7.1","shortMessageHtmlLink":"chore(main): release 3.7.1"}},{"before":null,"after":"02472e7315d0fd642db26441b3cb21f799906739","ref":"refs/heads/release-please--branches--main","pushedAt":"2024-05-22T17:25:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"release-please[bot]","name":null,"path":"/apps/release-please","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/40688?s=80&v=4"},"commit":{"message":"fix: add www.bestpractices.dev:443 to scorecard (#330)\n\n* fix: update scorecard.yml\r\n\r\n* fix: update scorecard.yml","shortMessageHtmlLink":"fix: add www.bestpractices.dev:443 to scorecard (#330)"}},{"before":"0ebea7d818a6dd62aa98df813eed6a79948d6b84","after":"02472e7315d0fd642db26441b3cb21f799906739","ref":"refs/heads/main","pushedAt":"2024-05-22T17:25:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"},"commit":{"message":"fix: add www.bestpractices.dev:443 to scorecard (#330)\n\n* fix: update scorecard.yml\r\n\r\n* fix: update scorecard.yml","shortMessageHtmlLink":"fix: add www.bestpractices.dev:443 to scorecard (#330)"}},{"before":"04c1fdc4185b8a97eb46d72b6432d32d5d70dffc","after":"0ebea7d818a6dd62aa98df813eed6a79948d6b84","ref":"refs/heads/main","pushedAt":"2024-05-22T16:48:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"},"commit":{"message":"chore(main): release 3.7.0 (#324)\n\nCo-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>","shortMessageHtmlLink":"chore(main): release 3.7.0 (#324)"}},{"before":"b67264b0d2eb65659752eb8c876a1224eeee5097","after":null,"ref":"refs/heads/release-please--branches--main","pushedAt":"2024-05-22T16:48:28.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"}},{"before":"76345a07d76f98ee8f914eb43b1914af5044b83c","after":"ec6a4f04dae3ce5b816aa2ae1aa1eb1ba20c1243","ref":"refs/heads/old-requests","pushedAt":"2024-05-21T21:23:00.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"},"commit":{"message":"fix: exclude broken python requests versions which cause docker.py failures (docker/docker-py#3256 and #3257)","shortMessageHtmlLink":"fix: exclude broken python requests versions which cause docker.py fa…"}},{"before":"8ebbfb1ff5dd60df1bad0e8206aada7899a8b477","after":"76345a07d76f98ee8f914eb43b1914af5044b83c","ref":"refs/heads/old-requests","pushedAt":"2024-05-21T21:19:23.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"},"commit":{"message":"fix: exclude broken python requests versions which cause docker.py failures (docker/docker-py#3256 and #3257)","shortMessageHtmlLink":"fix: exclude broken python requests versions which cause docker.py fa…"}},{"before":"f0a434fdb4621bbfd9f92b9dc462280f91eba60c","after":"8ebbfb1ff5dd60df1bad0e8206aada7899a8b477","ref":"refs/heads/old-requests","pushedAt":"2024-05-21T21:18:39.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"},"commit":{"message":"fix: pin requests <2.32 until docker/docker-py#3256 is resolved","shortMessageHtmlLink":"fix: pin requests <2.32 until docker/docker-py#3256 is resolved"}},{"before":"70aef7f6f0631c261be941a2c3450a721283e5ed","after":"f0a434fdb4621bbfd9f92b9dc462280f91eba60c","ref":"refs/heads/old-requests","pushedAt":"2024-05-21T21:13:25.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"},"commit":{"message":"fix: pin requests <2.32 until docker/docker-py#3256 is resolved","shortMessageHtmlLink":"fix: pin requests <2.32 until docker/docker-py#3256 is resolved"}},{"before":null,"after":"70aef7f6f0631c261be941a2c3450a721283e5ed","ref":"refs/heads/old-requests","pushedAt":"2024-05-21T21:08:10.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"},"commit":{"message":"pin requests <2.32 until docker/docker-py#3256 is resolved","shortMessageHtmlLink":"pin requests <2.32 until docker/docker-py#3256 is resolved"}},{"before":"0242768d9e2f424786e38559a86193cd9a4ba73c","after":null,"ref":"refs/heads/old-default-worker-config","pushedAt":"2024-05-17T21:03:14.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"}},{"before":"6f7d6c7295cb6e3bf0f9ac68eb4e414794affb12","after":null,"ref":"refs/heads/zombie-timeout","pushedAt":"2024-05-17T21:03:11.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"}},{"before":"5aaa5160130c48a69fddabc3d3250981c1f8ce4d","after":"b67264b0d2eb65659752eb8c876a1224eeee5097","ref":"refs/heads/release-please--branches--main","pushedAt":"2024-05-17T20:20:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"release-please[bot]","name":null,"path":"/apps/release-please","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/40688?s=80&v=4"},"commit":{"message":"chore(main): release 3.7.0","shortMessageHtmlLink":"chore(main): release 3.7.0"}},{"before":"14584c14baf7883154e91ad2b7abd90f45448c1c","after":null,"ref":"refs/heads/jrmfg-patch-1","pushedAt":"2024-05-17T20:20:23.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"}},{"before":"2601975285386fc573de8033381edc99527ef3c9","after":"04c1fdc4185b8a97eb46d72b6432d32d5d70dffc","ref":"refs/heads/main","pushedAt":"2024-05-17T20:20:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"},"commit":{"message":"fix: Update scorecard.yml (#329)","shortMessageHtmlLink":"fix: Update scorecard.yml (#329)"}},{"before":"bd2ac0598a6b09a6c509030cd4342243005e9a58","after":"14584c14baf7883154e91ad2b7abd90f45448c1c","ref":"refs/heads/jrmfg-patch-1","pushedAt":"2024-05-17T20:16:16.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"},"commit":{"message":"Merge branch 'main' into jrmfg-patch-1","shortMessageHtmlLink":"Merge branch 'main' into jrmfg-patch-1"}},{"before":"a9f7ec02ae8b1e121becc16c145d23f47db3411b","after":"5aaa5160130c48a69fddabc3d3250981c1f8ce4d","ref":"refs/heads/release-please--branches--main","pushedAt":"2024-05-17T20:11:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"release-please[bot]","name":null,"path":"/apps/release-please","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/40688?s=80&v=4"},"commit":{"message":"chore(main): release 3.7.0","shortMessageHtmlLink":"chore(main): release 3.7.0"}},{"before":"fff38ae6ecb1054bad676900216663050e6edf10","after":"2601975285386fc573de8033381edc99527ef3c9","ref":"refs/heads/main","pushedAt":"2024-05-17T20:11:33.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"},"commit":{"message":"feat: (opt-in): terminate handling of work when the request has already timed out (#328)\n\nOverhead-free (or at least very cheap).\r\n\r\nThe “timeout” gunicorn config means drastically different things for\r\nsync and non-sync workers:\r\n\r\n> Workers silent for more than this many seconds are killed and restarted.\r\n> \r\n> Value is a positive number or 0. Setting it to 0 has the effect of\r\n> infinite timeouts by disabling timeouts for all workers entirely.\r\n> \r\n> Generally, the default of thirty seconds should suffice. Only set this\r\n> noticeably higher if you’re sure of the repercussions for sync workers.\r\n> For the non sync workers it just means that the worker process is still\r\n> communicating and is not tied to the length of time required to handle a\r\n> single request.\r\n\r\nSo. For cases where threads = 1 (user set or our defaults), we’ll use\r\nthe sync worker and let the regular timeout functionality do its thing.\r\n\r\nFor cases where threads > 1, we’re using the gthread worker, and timeout\r\nmeans something completely different and not really user-observable. So\r\nwe’ll leave the communication timeout (default gunicorn “timeout”) at 30\r\nseconds, but create our own gthread-derived worker class to use instead,\r\nwhich terminates request handling (with no mind to gunicorn’s “graceful\r\nshutdown” config), to emulate GCFv1.\r\n\r\nThe arbiter spawns these workers, so we have to maintain some sort of\r\nglobal timeout state for us to read in our custom gthread worker.\r\n\r\nIn the future, we should consider letting the user adjust the graceful\r\nshutdown seconds. But the default of 30 seems like it’s worked fine\r\nhistorically, so it’s hard to argue for changing it. IIUC, this means\r\nthat on gen 2, there’s a small behavior difference for the sync workers\r\ncompared to gen 1, in that gen 2 sync worker workloads will get an extra\r\n30 seconds of timeout to gracefully shut down. I don’t think monkeying\r\nwith this config and opting-in to sync workers is very common, though,\r\nso let’s not worry about it here; everyone should be on the gthread path\r\noutlined above.\r\n\r\n* fix tests\r\n\r\n* small test fixes\r\n\r\ngive up on coverage support for things that are tested in different\r\nprocesses, or in gthread, because it looks like pytest-cov gave up on\r\nsupport for these, where as coverage has out-of-the-box support\r\n\r\n* format\r\n\r\n* isort everything\r\n\r\n* skip tests on mac\r\n\r\nthere's something test-specific about how mac pickles functions for\r\nexecution in multiprocessing.Process which is causing problems. it\r\nseems somewhere in the innards of flask and gunicorn and macos...\r\n\r\nsince this feature is opt-in anyway, let's just skip testing darwin.\r\n\r\n* sort tuple of dicts in async tests before asserting\r\n\r\ncauses flakes sometimes in workflows\r\n\r\n* use double-quotes\r\n\r\n* also skip tests on windows - this is all built for gunicorn, there's no\r\nvalue adding it for windows anyway\r\n\r\n* skip import on windows\r\n\r\n* easy stuff\r\n\r\n* add a few tests for sync worker timeouts\r\n\r\nthese shouldn't have changed with this commit","shortMessageHtmlLink":"feat: (opt-in): terminate handling of work when the request has alrea…"}},{"before":null,"after":"bd2ac0598a6b09a6c509030cd4342243005e9a58","ref":"refs/heads/jrmfg-patch-1","pushedAt":"2024-05-17T19:52:58.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"},"commit":{"message":"Update scorecard.yml","shortMessageHtmlLink":"Update scorecard.yml"}},{"before":"1e18b82207329eda5123ec0acdce0c3791396b7d","after":"6f7d6c7295cb6e3bf0f9ac68eb4e414794affb12","ref":"refs/heads/zombie-timeout","pushedAt":"2024-05-17T18:31:54.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"},"commit":{"message":"use double-quotes","shortMessageHtmlLink":"use double-quotes"}},{"before":null,"after":"1e18b82207329eda5123ec0acdce0c3791396b7d","ref":"refs/heads/zombie-timeout","pushedAt":"2024-05-17T18:07:30.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"},"commit":{"message":"format","shortMessageHtmlLink":"format"}},{"before":"7e6df461b5b76553fa13f57c4f0fb960df1d3c8b","after":"a9f7ec02ae8b1e121becc16c145d23f47db3411b","ref":"refs/heads/release-please--branches--main","pushedAt":"2024-05-16T20:34:56.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"release-please[bot]","name":null,"path":"/apps/release-please","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/40688?s=80&v=4"},"commit":{"message":"chore(main): release 3.7.0","shortMessageHtmlLink":"chore(main): release 3.7.0"}},{"before":"8ab4f600c9a3a3225e46d883860642dd4a2fae1f","after":null,"ref":"refs/heads/jrmfg-patch-1","pushedAt":"2024-05-16T20:34:44.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"}},{"before":"3d4389229cfa0bc9bf29783a9f831525a2d1aaea","after":"fff38ae6ecb1054bad676900216663050e6edf10","ref":"refs/heads/main","pushedAt":"2024-05-16T20:34:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jrmfg","name":"Jeremy Fehr","path":"/jrmfg","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/117788025?s=80&v=4"},"commit":{"message":"fix: update scorecard.yml (#327)\n\nneeded for security scorecard","shortMessageHtmlLink":"fix: update scorecard.yml (#327)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEWpqDTQA","startCursor":null,"endCursor":null}},"title":"Activity · GoogleCloudPlatform/functions-framework-python"}