{"action":"created","comment":{"url":"https://api.github.com/repos/eventlet/eventlet/pulls/comments/212830595","pull_request_review_id":149542623,"id":212830595,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMjgzMDU5NQ==","diff_hunk":"@@ -21,9 +22,17 @@ def alarm_signal(seconds):\n \n from eventlet.hubs import timer, IOClosed\n from eventlet.support import greenlets as greenlet, clear_sys_exc_info\n-import monotonic\n+from eventlet import patcher\n import six\n \n+mod = os.environ.get('EVENTLET_CLOCK')\n+if not mod:\n+    from monotonic import monotonic as eventlet_clock\n+else:\n+    mod = mod.rsplit('.', 1)\n+    eventlet_clock = getattr(patcher.original(mod[0]), mod[1])","path":"eventlet/hubs/hub.py","position":21,"original_position":21,"commit_id":"4a259a1eae77bc3fa973c11746c541f9dc3541fd","original_commit_id":"4a259a1eae77bc3fa973c11746c541f9dc3541fd","user":{"login":"temoto","id":27057,"node_id":"MDQ6VXNlcjI3MDU3","avatar_url":"https://avatars2.githubusercontent.com/u/27057?v=4","gravatar_id":"","url":"https://api.github.com/users/temoto","html_url":"https://github.com/temoto","followers_url":"https://api.github.com/users/temoto/followers","following_url":"https://api.github.com/users/temoto/following{/other_user}","gists_url":"https://api.github.com/users/temoto/gists{/gist_id}","starred_url":"https://api.github.com/users/temoto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/temoto/subscriptions","organizations_url":"https://api.github.com/users/temoto/orgs","repos_url":"https://api.github.com/users/temoto/repos","events_url":"https://api.github.com/users/temoto/events{/privacy}","received_events_url":"https://api.github.com/users/temoto/received_events","type":"User","site_admin":false},"body":"There is no need in patcher.original here.","created_at":"2018-08-26T15:51:47Z","updated_at":"2018-08-26T15:53:31Z","html_url":"https://github.com/eventlet/eventlet/pull/518#discussion_r212830595","pull_request_url":"https://api.github.com/repos/eventlet/eventlet/pulls/518","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/eventlet/eventlet/pulls/comments/212830595"},"html":{"href":"https://github.com/eventlet/eventlet/pull/518#discussion_r212830595"},"pull_request":{"href":"https://api.github.com/repos/eventlet/eventlet/pulls/518"}}},"pull_request":{"url":"https://api.github.com/repos/eventlet/eventlet/pulls/518","id":210949111,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEwOTQ5MTEx","html_url":"https://github.com/eventlet/eventlet/pull/518","diff_url":"https://github.com/eventlet/eventlet/pull/518.diff","patch_url":"https://github.com/eventlet/eventlet/pull/518.patch","issue_url":"https://api.github.com/repos/eventlet/eventlet/issues/518","number":518,"state":"open","locked":false,"title":"configure hub clock source via EVENTLET_CLOCK","user":{"login":"kashirin-alex","id":5158149,"node_id":"MDQ6VXNlcjUxNTgxNDk=","avatar_url":"https://avatars2.githubusercontent.com/u/5158149?v=4","gravatar_id":"","url":"https://api.github.com/users/kashirin-alex","html_url":"https://github.com/kashirin-alex","followers_url":"https://api.github.com/users/kashirin-alex/followers","following_url":"https://api.github.com/users/kashirin-alex/following{/other_user}","gists_url":"https://api.github.com/users/kashirin-alex/gists{/gist_id}","starred_url":"https://api.github.com/users/kashirin-alex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kashirin-alex/subscriptions","organizations_url":"https://api.github.com/users/kashirin-alex/orgs","repos_url":"https://api.github.com/users/kashirin-alex/repos","events_url":"https://api.github.com/users/kashirin-alex/events{/privacy}","received_events_url":"https://api.github.com/users/kashirin-alex/received_events","type":"User","site_admin":false},"body":"Hub's default clock is conditioned on the following order:\r\n\r\n1.  a clock method is passed to hub's init\r\n2.  a passed method on environ EVENTLET_CLOCK=module.module.method\r\n3.  time.monotonic , if exists\r\n4.  monotonic.monotonic , last resort \r\n\r\n  - setup does not require monotonic package when time.monotonic exists\r\n  - eventlet init doesn't import monotonic when time.monotonic exists\r\n  - at run time, the clock is available at hubs.get_hub().clock\r\n  - green.ssl changed to use hub's clock\r\n\r\nRelated:\r\n#517 \r\n#388\r\n#303\r\n#270\r\n#132\r\n\r\n\r\nif at some point a clock need to be changed for the initiated hub at run time, that can be done by: \r\n`hubs.get_hub().clock = new_clock_method`\r\n(that cannot be recommend for clocks with big difference)","created_at":"2018-08-26T12:28:02Z","updated_at":"2018-08-26T15:53:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2066b692aa502674ce5c2aa2e3aad96d05ee9180","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/eventlet/eventlet/pulls/518/commits","review_comments_url":"https://api.github.com/repos/eventlet/eventlet/pulls/518/comments","review_comment_url":"https://api.github.com/repos/eventlet/eventlet/pulls/comments{/number}","comments_url":"https://api.github.com/repos/eventlet/eventlet/issues/518/comments","statuses_url":"https://api.github.com/repos/eventlet/eventlet/statuses/4a259a1eae77bc3fa973c11746c541f9dc3541fd","head":{"label":"kashirin-alex:master","ref":"master","sha":"4a259a1eae77bc3fa973c11746c541f9dc3541fd","user":{"login":"kashirin-alex","id":5158149,"node_id":"MDQ6VXNlcjUxNTgxNDk=","avatar_url":"https://avatars2.githubusercontent.com/u/5158149?v=4","gravatar_id":"","url":"https://api.github.com/users/kashirin-alex","html_url":"https://github.com/kashirin-alex","followers_url":"https://api.github.com/users/kashirin-alex/followers","following_url":"https://api.github.com/users/kashirin-alex/following{/other_user}","gists_url":"https://api.github.com/users/kashirin-alex/gists{/gist_id}","starred_url":"https://api.github.com/users/kashirin-alex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kashirin-alex/subscriptions","organizations_url":"https://api.github.com/users/kashirin-alex/orgs","repos_url":"https://api.github.com/users/kashirin-alex/repos","events_url":"https://api.github.com/users/kashirin-alex/events{/privacy}","received_events_url":"https://api.github.com/users/kashirin-alex/received_events","type":"User","site_admin":false},"repo":{"id":145781974,"node_id":"MDEwOlJlcG9zaXRvcnkxNDU3ODE5NzQ=","name":"eventlet","full_name":"kashirin-alex/eventlet","owner":{"login":"kashirin-alex","id":5158149,"node_id":"MDQ6VXNlcjUxNTgxNDk=","avatar_url":"https://avatars2.githubusercontent.com/u/5158149?v=4","gravatar_id":"","url":"https://api.github.com/users/kashirin-alex","html_url":"https://github.com/kashirin-alex","followers_url":"https://api.github.com/users/kashirin-alex/followers","following_url":"https://api.github.com/users/kashirin-alex/following{/other_user}","gists_url":"https://api.github.com/users/kashirin-alex/gists{/gist_id}","starred_url":"https://api.github.com/users/kashirin-alex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kashirin-alex/subscriptions","organizations_url":"https://api.github.com/users/kashirin-alex/orgs","repos_url":"https://api.github.com/users/kashirin-alex/repos","events_url":"https://api.github.com/users/kashirin-alex/events{/privacy}","received_events_url":"https://api.github.com/users/kashirin-alex/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kashirin-alex/eventlet","description":"Concurrent networking library for Python","fork":true,"url":"https://api.github.com/repos/kashirin-alex/eventlet","forks_url":"https://api.github.com/repos/kashirin-alex/eventlet/forks","keys_url":"https://api.github.com/repos/kashirin-alex/eventlet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kashirin-alex/eventlet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kashirin-alex/eventlet/teams","hooks_url":"https://api.github.com/repos/kashirin-alex/eventlet/hooks","issue_events_url":"https://api.github.com/repos/kashirin-alex/eventlet/issues/events{/number}","events_url":"https://api.github.com/repos/kashirin-alex/eventlet/events","assignees_url":"https://api.github.com/repos/kashirin-alex/eventlet/assignees{/user}","branches_url":"https://api.github.com/repos/kashirin-alex/eventlet/branches{/branch}","tags_url":"https://api.github.com/repos/kashirin-alex/eventlet/tags","blobs_url":"https://api.github.com/repos/kashirin-alex/eventlet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kashirin-alex/eventlet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kashirin-alex/eventlet/git/refs{/sha}","trees_url":"https://api.github.com/repos/kashirin-alex/eventlet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kashirin-alex/eventlet/statuses/{sha}","languages_url":"https://api.github.com/repos/kashirin-alex/eventlet/languages","stargazers_url":"https://api.github.com/repos/kashirin-alex/eventlet/stargazers","contributors_url":"https://api.github.com/repos/kashirin-alex/eventlet/contributors","subscribers_url":"https://api.github.com/repos/kashirin-alex/eventlet/subscribers","subscription_url":"https://api.github.com/repos/kashirin-alex/eventlet/subscription","commits_url":"https://api.github.com/repos/kashirin-alex/eventlet/commits{/sha}","git_commits_url":"https://api.github.com/repos/kashirin-alex/eventlet/git/commits{/sha}","comments_url":"https://api.github.com/repos/kashirin-alex/eventlet/comments{/number}","issue_comment_url":"https://api.github.com/repos/kashirin-alex/eventlet/issues/comments{/number}","contents_url":"https://api.github.com/repos/kashirin-alex/eventlet/contents/{+path}","compare_url":"https://api.github.com/repos/kashirin-alex/eventlet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kashirin-alex/eventlet/merges","archive_url":"https://api.github.com/repos/kashirin-alex/eventlet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kashirin-alex/eventlet/downloads","issues_url":"https://api.github.com/repos/kashirin-alex/eventlet/issues{/number}","pulls_url":"https://api.github.com/repos/kashirin-alex/eventlet/pulls{/number}","milestones_url":"https://api.github.com/repos/kashirin-alex/eventlet/milestones{/number}","notifications_url":"https://api.github.com/repos/kashirin-alex/eventlet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kashirin-alex/eventlet/labels{/name}","releases_url":"https://api.github.com/repos/kashirin-alex/eventlet/releases{/id}","deployments_url":"https://api.github.com/repos/kashirin-alex/eventlet/deployments","created_at":"2018-08-23T01:15:51Z","updated_at":"2018-08-26T15:49:00Z","pushed_at":"2018-08-26T15:53:00Z","git_url":"git://github.com/kashirin-alex/eventlet.git","ssh_url":"git@github.com:kashirin-alex/eventlet.git","clone_url":"https://github.com/kashirin-alex/eventlet.git","svn_url":"https://github.com/kashirin-alex/eventlet","homepage":"http://eventlet.net","size":8371,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"eventlet:master","ref":"master","sha":"96fccf3dd88fb60368c5d1ab49d8b9eb85e99502","user":{"login":"eventlet","id":3017635,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMwMTc2MzU=","avatar_url":"https://avatars0.githubusercontent.com/u/3017635?v=4","gravatar_id":"","url":"https://api.github.com/users/eventlet","html_url":"https://github.com/eventlet","followers_url":"https://api.github.com/users/eventlet/followers","following_url":"https://api.github.com/users/eventlet/following{/other_user}","gists_url":"https://api.github.com/users/eventlet/gists{/gist_id}","starred_url":"https://api.github.com/users/eventlet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eventlet/subscriptions","organizations_url":"https://api.github.com/users/eventlet/orgs","repos_url":"https://api.github.com/users/eventlet/repos","events_url":"https://api.github.com/users/eventlet/events{/privacy}","received_events_url":"https://api.github.com/users/eventlet/received_events","type":"Organization","site_admin":false},"repo":{"id":7115259,"node_id":"MDEwOlJlcG9zaXRvcnk3MTE1MjU5","name":"eventlet","full_name":"eventlet/eventlet","owner":{"login":"eventlet","id":3017635,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMwMTc2MzU=","avatar_url":"https://avatars0.githubusercontent.com/u/3017635?v=4","gravatar_id":"","url":"https://api.github.com/users/eventlet","html_url":"https://github.com/eventlet","followers_url":"https://api.github.com/users/eventlet/followers","following_url":"https://api.github.com/users/eventlet/following{/other_user}","gists_url":"https://api.github.com/users/eventlet/gists{/gist_id}","starred_url":"https://api.github.com/users/eventlet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eventlet/subscriptions","organizations_url":"https://api.github.com/users/eventlet/orgs","repos_url":"https://api.github.com/users/eventlet/repos","events_url":"https://api.github.com/users/eventlet/events{/privacy}","received_events_url":"https://api.github.com/users/eventlet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/eventlet/eventlet","description":"Concurrent networking library for Python","fork":false,"url":"https://api.github.com/repos/eventlet/eventlet","forks_url":"https://api.github.com/repos/eventlet/eventlet/forks","keys_url":"https://api.github.com/repos/eventlet/eventlet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/eventlet/eventlet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/eventlet/eventlet/teams","hooks_url":"https://api.github.com/repos/eventlet/eventlet/hooks","issue_events_url":"https://api.github.com/repos/eventlet/eventlet/issues/events{/number}","events_url":"https://api.github.com/repos/eventlet/eventlet/events","assignees_url":"https://api.github.com/repos/eventlet/eventlet/assignees{/user}","branches_url":"https://api.github.com/repos/eventlet/eventlet/branches{/branch}","tags_url":"https://api.github.com/repos/eventlet/eventlet/tags","blobs_url":"https://api.github.com/repos/eventlet/eventlet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/eventlet/eventlet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/eventlet/eventlet/git/refs{/sha}","trees_url":"https://api.github.com/repos/eventlet/eventlet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/eventlet/eventlet/statuses/{sha}","languages_url":"https://api.github.com/repos/eventlet/eventlet/languages","stargazers_url":"https://api.github.com/repos/eventlet/eventlet/stargazers","contributors_url":"https://api.github.com/repos/eventlet/eventlet/contributors","subscribers_url":"https://api.github.com/repos/eventlet/eventlet/subscribers","subscription_url":"https://api.github.com/repos/eventlet/eventlet/subscription","commits_url":"https://api.github.com/repos/eventlet/eventlet/commits{/sha}","git_commits_url":"https://api.github.com/repos/eventlet/eventlet/git/commits{/sha}","comments_url":"https://api.github.com/repos/eventlet/eventlet/comments{/number}","issue_comment_url":"https://api.github.com/repos/eventlet/eventlet/issues/comments{/number}","contents_url":"https://api.github.com/repos/eventlet/eventlet/contents/{+path}","compare_url":"https://api.github.com/repos/eventlet/eventlet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/eventlet/eventlet/merges","archive_url":"https://api.github.com/repos/eventlet/eventlet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/eventlet/eventlet/downloads","issues_url":"https://api.github.com/repos/eventlet/eventlet/issues{/number}","pulls_url":"https://api.github.com/repos/eventlet/eventlet/pulls{/number}","milestones_url":"https://api.github.com/repos/eventlet/eventlet/milestones{/number}","notifications_url":"https://api.github.com/repos/eventlet/eventlet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/eventlet/eventlet/labels{/name}","releases_url":"https://api.github.com/repos/eventlet/eventlet/releases{/id}","deployments_url":"https://api.github.com/repos/eventlet/eventlet/deployments","created_at":"2012-12-11T16:33:20Z","updated_at":"2018-08-24T09:34:28Z","pushed_at":"2018-08-26T15:50:16Z","git_url":"git://github.com/eventlet/eventlet.git","ssh_url":"git@github.com:eventlet/eventlet.git","clone_url":"https://github.com/eventlet/eventlet.git","svn_url":"https://github.com/eventlet/eventlet","homepage":"http://eventlet.net","size":8278,"stargazers_count":711,"watchers_count":711,"language":"Python","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":216,"mirror_url":null,"archived":false,"open_issues_count":129,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":216,"open_issues":129,"watchers":711,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/eventlet/eventlet/pulls/518"},"html":{"href":"https://github.com/eventlet/eventlet/pull/518"},"issue":{"href":"https://api.github.com/repos/eventlet/eventlet/issues/518"},"comments":{"href":"https://api.github.com/repos/eventlet/eventlet/issues/518/comments"},"review_comments":{"href":"https://api.github.com/repos/eventlet/eventlet/pulls/518/comments"},"review_comment":{"href":"https://api.github.com/repos/eventlet/eventlet/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/eventlet/eventlet/pulls/518/commits"},"statuses":{"href":"https://api.github.com/repos/eventlet/eventlet/statuses/4a259a1eae77bc3fa973c11746c541f9dc3541fd"}},"author_association":"NONE"}}
{"actor":{"display_login":"temoto"}}