{"action":"opened","issue":{"url":"https://api.github.com/repos/potatolondon/djangae/issues/1033","repository_url":"https://api.github.com/repos/potatolondon/djangae","labels_url":"https://api.github.com/repos/potatolondon/djangae/issues/1033/labels{/name}","comments_url":"https://api.github.com/repos/potatolondon/djangae/issues/1033/comments","events_url":"https://api.github.com/repos/potatolondon/djangae/issues/1033/events","html_url":"https://github.com/potatolondon/djangae/issues/1033","id":300568804,"number":1033,"title":"Add `djangae.deferred`","user":{"login":"Kazade","id":16649,"avatar_url":"https://avatars3.githubusercontent.com/u/16649?v=4","gravatar_id":"","url":"https://api.github.com/users/Kazade","html_url":"https://github.com/Kazade","followers_url":"https://api.github.com/users/Kazade/followers","following_url":"https://api.github.com/users/Kazade/following{/other_user}","gists_url":"https://api.github.com/users/Kazade/gists{/gist_id}","starred_url":"https://api.github.com/users/Kazade/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Kazade/subscriptions","organizations_url":"https://api.github.com/users/Kazade/orgs","repos_url":"https://api.github.com/users/Kazade/repos","events_url":"https://api.github.com/users/Kazade/events{/privacy}","received_events_url":"https://api.github.com/users/Kazade/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"Kazade","id":16649,"avatar_url":"https://avatars3.githubusercontent.com/u/16649?v=4","gravatar_id":"","url":"https://api.github.com/users/Kazade","html_url":"https://github.com/Kazade","followers_url":"https://api.github.com/users/Kazade/followers","following_url":"https://api.github.com/users/Kazade/following{/other_user}","gists_url":"https://api.github.com/users/Kazade/gists{/gist_id}","starred_url":"https://api.github.com/users/Kazade/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Kazade/subscriptions","organizations_url":"https://api.github.com/users/Kazade/orgs","repos_url":"https://api.github.com/users/Kazade/repos","events_url":"https://api.github.com/users/Kazade/events{/privacy}","received_events_url":"https://api.github.com/users/Kazade/received_events","type":"User","site_admin":false},"assignees":[{"login":"Kazade","id":16649,"avatar_url":"https://avatars3.githubusercontent.com/u/16649?v=4","gravatar_id":"","url":"https://api.github.com/users/Kazade","html_url":"https://github.com/Kazade","followers_url":"https://api.github.com/users/Kazade/followers","following_url":"https://api.github.com/users/Kazade/following{/other_user}","gists_url":"https://api.github.com/users/Kazade/gists{/gist_id}","starred_url":"https://api.github.com/users/Kazade/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Kazade/subscriptions","organizations_url":"https://api.github.com/users/Kazade/orgs","repos_url":"https://api.github.com/users/Kazade/repos","events_url":"https://api.github.com/users/Kazade/events{/privacy}","received_events_url":"https://api.github.com/users/Kazade/received_events","type":"User","site_admin":false}],"milestone":null,"comments":0,"created_at":"2018-02-27T10:16:50Z","updated_at":"2018-02-27T10:16:50Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"The built-in defer() call in the App Engine SDK suffers a number of issues (some bugs, some design):\r\n\r\n - Deferring a large task (>100K) inside a transaction will not respect the `_transactional` flag. This is dangerous as your code might work fine for a while, and then things can go very badly wrong if an entity or object grows in size.\r\n - `defer()` may or may not use an entity group, depending on the size of the objects. Again, this is a ticking time bomb if you defer a task inside a non-xg transaction; one day your code might just break.\r\n - `defer()` uses the built-in Python pickle which is quite limited when there are [better options](https://github.com/cloudpipe/cloudpickle)\r\n\r\nI plan to write a replacement for defer that has the following changes:\r\n\r\n - It will correctly handle large objects when deferring in transactions.\r\n - It will use cloudpickle for pickling/unpickling.\r\n - It will always use an entity group unless a `_small_task=True` is passed which would *never* use an entity group (but will throw an exception if you defer something too big). \r\n\r\n\r\n"}}
{"actor":{"display_login":"Kazade"}}