{"action":"created","comment":{"url":"https://api.github.com/repos/pynamodb/PynamoDB/pulls/comments/125818864","pull_request_review_id":48236402,"id":125818864,"diff_hunk":"@@ -0,0 +1,42 @@\n+Signals\n+=======\n+Starting with Pynamo 4.0.0, there is support for signalling in Pynamo.  This support is provided by the excellent `blinker`_ library and will gracefully fall back if it is not available. `blinker`_  is not installed by default, as we didn't want to additional overhead to network calls if it wasn't needed.\n+\n+Signals allow certain senders to notify subscribers that something happened. PynamoDB only sends signals before and after every DynamoDB API call.\n+\n+We purposely only send the operation name and the table name to the callback, as we want to prevent users from doing business logic in the signal. Keep in mind that signals are intended to notify subscribers. Subscribers should not try to modify data or do database calls within the callback. Also, adding too much logic in the callback will degrade the performance of your database writes.\n+\n+\n+Subscribing to Signals\n+----------------------\n+\n+We fire `pre_dynamo_send` before the network call and `post_dynamo_send` after the network call to DynmaoDB.","path":"docs/signals.rst","position":13,"original_position":13,"commit_id":"60fa7b7059e9dd78bacafc905372da39e8be23a1","original_commit_id":"60fa7b7059e9dd78bacafc905372da39e8be23a1","user":{"login":"garrettheel","id":637005,"avatar_url":"https://avatars3.githubusercontent.com/u/637005?v=3","gravatar_id":"","url":"https://api.github.com/users/garrettheel","html_url":"https://github.com/garrettheel","followers_url":"https://api.github.com/users/garrettheel/followers","following_url":"https://api.github.com/users/garrettheel/following{/other_user}","gists_url":"https://api.github.com/users/garrettheel/gists{/gist_id}","starred_url":"https://api.github.com/users/garrettheel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/garrettheel/subscriptions","organizations_url":"https://api.github.com/users/garrettheel/orgs","repos_url":"https://api.github.com/users/garrettheel/repos","events_url":"https://api.github.com/users/garrettheel/events{/privacy}","received_events_url":"https://api.github.com/users/garrettheel/received_events","type":"User","site_admin":false},"body":"It's a little awkward to use first-person in the writing here. Maybe something like:\r\n\r\n```\r\nThe signals currently supported are:\r\n * `pre_dynamo_send` - ...\r\n * `post_dynamo_send` - ...\r\n```\r\n\r\nAlso `s/DynmaoDB/DynamoDB`","created_at":"2017-07-06T06:19:33Z","updated_at":"2017-07-06T06:23:48Z","html_url":"https://github.com/pynamodb/PynamoDB/pull/278#discussion_r125818864","pull_request_url":"https://api.github.com/repos/pynamodb/PynamoDB/pulls/278","_links":{"self":{"href":"https://api.github.com/repos/pynamodb/PynamoDB/pulls/comments/125818864"},"html":{"href":"https://github.com/pynamodb/PynamoDB/pull/278#discussion_r125818864"},"pull_request":{"href":"https://api.github.com/repos/pynamodb/PynamoDB/pulls/278"}}},"pull_request":{"url":"https://api.github.com/repos/pynamodb/PynamoDB/pulls/278","id":120213715,"html_url":"https://github.com/pynamodb/PynamoDB/pull/278","diff_url":"https://github.com/pynamodb/PynamoDB/pull/278.diff","patch_url":"https://github.com/pynamodb/PynamoDB/pull/278.patch","issue_url":"https://api.github.com/repos/pynamodb/PynamoDB/issues/278","number":278,"state":"open","locked":false,"title":"Add Signals to AWS Calls","user":{"login":"lita","id":4725921,"avatar_url":"https://avatars1.githubusercontent.com/u/4725921?v=3","gravatar_id":"","url":"https://api.github.com/users/lita","html_url":"https://github.com/lita","followers_url":"https://api.github.com/users/lita/followers","following_url":"https://api.github.com/users/lita/following{/other_user}","gists_url":"https://api.github.com/users/lita/gists{/gist_id}","starred_url":"https://api.github.com/users/lita/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lita/subscriptions","organizations_url":"https://api.github.com/users/lita/orgs","repos_url":"https://api.github.com/users/lita/repos","events_url":"https://api.github.com/users/lita/events{/privacy}","received_events_url":"https://api.github.com/users/lita/received_events","type":"User","site_admin":false},"body":"","created_at":"2017-05-11T22:20:14Z","updated_at":"2017-07-06T06:23:48Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5d8a850a43d412e4fc72d8dbf3f99e068972af5d","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/pynamodb/PynamoDB/pulls/278/commits","review_comments_url":"https://api.github.com/repos/pynamodb/PynamoDB/pulls/278/comments","review_comment_url":"https://api.github.com/repos/pynamodb/PynamoDB/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pynamodb/PynamoDB/issues/278/comments","statuses_url":"https://api.github.com/repos/pynamodb/PynamoDB/statuses/60fa7b7059e9dd78bacafc905372da39e8be23a1","head":{"label":"pynamodb:signals","ref":"signals","sha":"60fa7b7059e9dd78bacafc905372da39e8be23a1","user":{"login":"pynamodb","id":27022537,"avatar_url":"https://avatars1.githubusercontent.com/u/27022537?v=3","gravatar_id":"","url":"https://api.github.com/users/pynamodb","html_url":"https://github.com/pynamodb","followers_url":"https://api.github.com/users/pynamodb/followers","following_url":"https://api.github.com/users/pynamodb/following{/other_user}","gists_url":"https://api.github.com/users/pynamodb/gists{/gist_id}","starred_url":"https://api.github.com/users/pynamodb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pynamodb/subscriptions","organizations_url":"https://api.github.com/users/pynamodb/orgs","repos_url":"https://api.github.com/users/pynamodb/repos","events_url":"https://api.github.com/users/pynamodb/events{/privacy}","received_events_url":"https://api.github.com/users/pynamodb/received_events","type":"Organization","site_admin":false},"repo":{"id":16058979,"name":"PynamoDB","full_name":"pynamodb/PynamoDB","owner":{"login":"pynamodb","id":27022537,"avatar_url":"https://avatars1.githubusercontent.com/u/27022537?v=3","gravatar_id":"","url":"https://api.github.com/users/pynamodb","html_url":"https://github.com/pynamodb","followers_url":"https://api.github.com/users/pynamodb/followers","following_url":"https://api.github.com/users/pynamodb/following{/other_user}","gists_url":"https://api.github.com/users/pynamodb/gists{/gist_id}","starred_url":"https://api.github.com/users/pynamodb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pynamodb/subscriptions","organizations_url":"https://api.github.com/users/pynamodb/orgs","repos_url":"https://api.github.com/users/pynamodb/repos","events_url":"https://api.github.com/users/pynamodb/events{/privacy}","received_events_url":"https://api.github.com/users/pynamodb/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pynamodb/PynamoDB","description":"A pythonic interface to Amazon's DynamoDB","fork":false,"url":"https://api.github.com/repos/pynamodb/PynamoDB","forks_url":"https://api.github.com/repos/pynamodb/PynamoDB/forks","keys_url":"https://api.github.com/repos/pynamodb/PynamoDB/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pynamodb/PynamoDB/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pynamodb/PynamoDB/teams","hooks_url":"https://api.github.com/repos/pynamodb/PynamoDB/hooks","issue_events_url":"https://api.github.com/repos/pynamodb/PynamoDB/issues/events{/number}","events_url":"https://api.github.com/repos/pynamodb/PynamoDB/events","assignees_url":"https://api.github.com/repos/pynamodb/PynamoDB/assignees{/user}","branches_url":"https://api.github.com/repos/pynamodb/PynamoDB/branches{/branch}","tags_url":"https://api.github.com/repos/pynamodb/PynamoDB/tags","blobs_url":"https://api.github.com/repos/pynamodb/PynamoDB/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pynamodb/PynamoDB/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pynamodb/PynamoDB/git/refs{/sha}","trees_url":"https://api.github.com/repos/pynamodb/PynamoDB/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pynamodb/PynamoDB/statuses/{sha}","languages_url":"https://api.github.com/repos/pynamodb/PynamoDB/languages","stargazers_url":"https://api.github.com/repos/pynamodb/PynamoDB/stargazers","contributors_url":"https://api.github.com/repos/pynamodb/PynamoDB/contributors","subscribers_url":"https://api.github.com/repos/pynamodb/PynamoDB/subscribers","subscription_url":"https://api.github.com/repos/pynamodb/PynamoDB/subscription","commits_url":"https://api.github.com/repos/pynamodb/PynamoDB/commits{/sha}","git_commits_url":"https://api.github.com/repos/pynamodb/PynamoDB/git/commits{/sha}","comments_url":"https://api.github.com/repos/pynamodb/PynamoDB/comments{/number}","issue_comment_url":"https://api.github.com/repos/pynamodb/PynamoDB/issues/comments{/number}","contents_url":"https://api.github.com/repos/pynamodb/PynamoDB/contents/{+path}","compare_url":"https://api.github.com/repos/pynamodb/PynamoDB/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pynamodb/PynamoDB/merges","archive_url":"https://api.github.com/repos/pynamodb/PynamoDB/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pynamodb/PynamoDB/downloads","issues_url":"https://api.github.com/repos/pynamodb/PynamoDB/issues{/number}","pulls_url":"https://api.github.com/repos/pynamodb/PynamoDB/pulls{/number}","milestones_url":"https://api.github.com/repos/pynamodb/PynamoDB/milestones{/number}","notifications_url":"https://api.github.com/repos/pynamodb/PynamoDB/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pynamodb/PynamoDB/labels{/name}","releases_url":"https://api.github.com/repos/pynamodb/PynamoDB/releases{/id}","deployments_url":"https://api.github.com/repos/pynamodb/PynamoDB/deployments","created_at":"2014-01-20T02:18:35Z","updated_at":"2017-07-05T13:10:00Z","pushed_at":"2017-07-05T20:04:04Z","git_url":"git://github.com/pynamodb/PynamoDB.git","ssh_url":"git@github.com:pynamodb/PynamoDB.git","clone_url":"https://github.com/pynamodb/PynamoDB.git","svn_url":"https://github.com/pynamodb/PynamoDB","homepage":"http://pynamodb.readthedocs.org","size":1191,"stargazers_count":419,"watchers_count":419,"language":"Python","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":110,"mirror_url":null,"open_issues_count":72,"forks":110,"open_issues":72,"watchers":419,"default_branch":"master"}},"base":{"label":"pynamodb:master","ref":"master","sha":"2d815f67aaa8be1baf8b098bb99df00ac44fafb0","user":{"login":"pynamodb","id":27022537,"avatar_url":"https://avatars1.githubusercontent.com/u/27022537?v=3","gravatar_id":"","url":"https://api.github.com/users/pynamodb","html_url":"https://github.com/pynamodb","followers_url":"https://api.github.com/users/pynamodb/followers","following_url":"https://api.github.com/users/pynamodb/following{/other_user}","gists_url":"https://api.github.com/users/pynamodb/gists{/gist_id}","starred_url":"https://api.github.com/users/pynamodb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pynamodb/subscriptions","organizations_url":"https://api.github.com/users/pynamodb/orgs","repos_url":"https://api.github.com/users/pynamodb/repos","events_url":"https://api.github.com/users/pynamodb/events{/privacy}","received_events_url":"https://api.github.com/users/pynamodb/received_events","type":"Organization","site_admin":false},"repo":{"id":16058979,"name":"PynamoDB","full_name":"pynamodb/PynamoDB","owner":{"login":"pynamodb","id":27022537,"avatar_url":"https://avatars1.githubusercontent.com/u/27022537?v=3","gravatar_id":"","url":"https://api.github.com/users/pynamodb","html_url":"https://github.com/pynamodb","followers_url":"https://api.github.com/users/pynamodb/followers","following_url":"https://api.github.com/users/pynamodb/following{/other_user}","gists_url":"https://api.github.com/users/pynamodb/gists{/gist_id}","starred_url":"https://api.github.com/users/pynamodb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pynamodb/subscriptions","organizations_url":"https://api.github.com/users/pynamodb/orgs","repos_url":"https://api.github.com/users/pynamodb/repos","events_url":"https://api.github.com/users/pynamodb/events{/privacy}","received_events_url":"https://api.github.com/users/pynamodb/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pynamodb/PynamoDB","description":"A pythonic interface to Amazon's DynamoDB","fork":false,"url":"https://api.github.com/repos/pynamodb/PynamoDB","forks_url":"https://api.github.com/repos/pynamodb/PynamoDB/forks","keys_url":"https://api.github.com/repos/pynamodb/PynamoDB/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pynamodb/PynamoDB/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pynamodb/PynamoDB/teams","hooks_url":"https://api.github.com/repos/pynamodb/PynamoDB/hooks","issue_events_url":"https://api.github.com/repos/pynamodb/PynamoDB/issues/events{/number}","events_url":"https://api.github.com/repos/pynamodb/PynamoDB/events","assignees_url":"https://api.github.com/repos/pynamodb/PynamoDB/assignees{/user}","branches_url":"https://api.github.com/repos/pynamodb/PynamoDB/branches{/branch}","tags_url":"https://api.github.com/repos/pynamodb/PynamoDB/tags","blobs_url":"https://api.github.com/repos/pynamodb/PynamoDB/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pynamodb/PynamoDB/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pynamodb/PynamoDB/git/refs{/sha}","trees_url":"https://api.github.com/repos/pynamodb/PynamoDB/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pynamodb/PynamoDB/statuses/{sha}","languages_url":"https://api.github.com/repos/pynamodb/PynamoDB/languages","stargazers_url":"https://api.github.com/repos/pynamodb/PynamoDB/stargazers","contributors_url":"https://api.github.com/repos/pynamodb/PynamoDB/contributors","subscribers_url":"https://api.github.com/repos/pynamodb/PynamoDB/subscribers","subscription_url":"https://api.github.com/repos/pynamodb/PynamoDB/subscription","commits_url":"https://api.github.com/repos/pynamodb/PynamoDB/commits{/sha}","git_commits_url":"https://api.github.com/repos/pynamodb/PynamoDB/git/commits{/sha}","comments_url":"https://api.github.com/repos/pynamodb/PynamoDB/comments{/number}","issue_comment_url":"https://api.github.com/repos/pynamodb/PynamoDB/issues/comments{/number}","contents_url":"https://api.github.com/repos/pynamodb/PynamoDB/contents/{+path}","compare_url":"https://api.github.com/repos/pynamodb/PynamoDB/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pynamodb/PynamoDB/merges","archive_url":"https://api.github.com/repos/pynamodb/PynamoDB/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pynamodb/PynamoDB/downloads","issues_url":"https://api.github.com/repos/pynamodb/PynamoDB/issues{/number}","pulls_url":"https://api.github.com/repos/pynamodb/PynamoDB/pulls{/number}","milestones_url":"https://api.github.com/repos/pynamodb/PynamoDB/milestones{/number}","notifications_url":"https://api.github.com/repos/pynamodb/PynamoDB/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pynamodb/PynamoDB/labels{/name}","releases_url":"https://api.github.com/repos/pynamodb/PynamoDB/releases{/id}","deployments_url":"https://api.github.com/repos/pynamodb/PynamoDB/deployments","created_at":"2014-01-20T02:18:35Z","updated_at":"2017-07-05T13:10:00Z","pushed_at":"2017-07-05T20:04:04Z","git_url":"git://github.com/pynamodb/PynamoDB.git","ssh_url":"git@github.com:pynamodb/PynamoDB.git","clone_url":"https://github.com/pynamodb/PynamoDB.git","svn_url":"https://github.com/pynamodb/PynamoDB","homepage":"http://pynamodb.readthedocs.org","size":1191,"stargazers_count":419,"watchers_count":419,"language":"Python","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":110,"mirror_url":null,"open_issues_count":72,"forks":110,"open_issues":72,"watchers":419,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pynamodb/PynamoDB/pulls/278"},"html":{"href":"https://github.com/pynamodb/PynamoDB/pull/278"},"issue":{"href":"https://api.github.com/repos/pynamodb/PynamoDB/issues/278"},"comments":{"href":"https://api.github.com/repos/pynamodb/PynamoDB/issues/278/comments"},"review_comments":{"href":"https://api.github.com/repos/pynamodb/PynamoDB/pulls/278/comments"},"review_comment":{"href":"https://api.github.com/repos/pynamodb/PynamoDB/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pynamodb/PynamoDB/pulls/278/commits"},"statuses":{"href":"https://api.github.com/repos/pynamodb/PynamoDB/statuses/60fa7b7059e9dd78bacafc905372da39e8be23a1"}}}}
{"actor":{"display_login":"garrettheel"}}