{"action":"created","issue":{"url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/2622","labels_url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/2622/labels{/name}","comments_url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/2622/comments","events_url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/2622/events","html_url":"https://github.com/rethinkdb/rethinkdb/issues/2622","id":36734912,"number":2622,"title":"Asynchronous Driver For Python <Tornado and Tulip>","user":{"login":"v3ss0n","id":419606,"avatar_url":"https://avatars.githubusercontent.com/u/419606?v=3","gravatar_id":"","url":"https://api.github.com/users/v3ss0n","html_url":"https://github.com/v3ss0n","followers_url":"https://api.github.com/users/v3ss0n/followers","following_url":"https://api.github.com/users/v3ss0n/following{/other_user}","gists_url":"https://api.github.com/users/v3ss0n/gists{/gist_id}","starred_url":"https://api.github.com/users/v3ss0n/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/v3ss0n/subscriptions","organizations_url":"https://api.github.com/users/v3ss0n/orgs","repos_url":"https://api.github.com/users/v3ss0n/repos","events_url":"https://api.github.com/users/v3ss0n/events{/privacy}","received_events_url":"https://api.github.com/users/v3ss0n/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/rethinkdb/rethinkdb/labels/tp:feature","name":"tp:feature","color":"0b02e1"}],"state":"open","locked":false,"assignee":{"login":"gchpaco","id":17789,"avatar_url":"https://avatars.githubusercontent.com/u/17789?v=3","gravatar_id":"","url":"https://api.github.com/users/gchpaco","html_url":"https://github.com/gchpaco","followers_url":"https://api.github.com/users/gchpaco/followers","following_url":"https://api.github.com/users/gchpaco/following{/other_user}","gists_url":"https://api.github.com/users/gchpaco/gists{/gist_id}","starred_url":"https://api.github.com/users/gchpaco/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gchpaco/subscriptions","organizations_url":"https://api.github.com/users/gchpaco/orgs","repos_url":"https://api.github.com/users/gchpaco/repos","events_url":"https://api.github.com/users/gchpaco/events{/privacy}","received_events_url":"https://api.github.com/users/gchpaco/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/rethinkdb/rethinkdb/milestones/89","labels_url":"https://api.github.com/repos/rethinkdb/rethinkdb/milestones/89/labels","id":950901,"number":89,"title":"2.0","description":"","creator":{"login":"danielmewes","id":505365,"avatar_url":"https://avatars.githubusercontent.com/u/505365?v=3","gravatar_id":"","url":"https://api.github.com/users/danielmewes","html_url":"https://github.com/danielmewes","followers_url":"https://api.github.com/users/danielmewes/followers","following_url":"https://api.github.com/users/danielmewes/following{/other_user}","gists_url":"https://api.github.com/users/danielmewes/gists{/gist_id}","starred_url":"https://api.github.com/users/danielmewes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danielmewes/subscriptions","organizations_url":"https://api.github.com/users/danielmewes/orgs","repos_url":"https://api.github.com/users/danielmewes/repos","events_url":"https://api.github.com/users/danielmewes/events{/privacy}","received_events_url":"https://api.github.com/users/danielmewes/received_events","type":"User","site_admin":false},"open_issues":27,"closed_issues":14,"state":"open","created_at":"2015-01-26T07:45:17Z","updated_at":"2015-02-21T01:38:25Z","due_on":null,"closed_at":null},"comments":33,"created_at":"2014-06-28T22:35:07Z","updated_at":"2015-02-21T02:28:34Z","closed_at":null,"body":"Change feed on 1.13 is very intersting feature.Multi-media-realtime HTML5 projects are getitng very popular these days , and i am building one right now too , a multi-media-webchat .It needs a lot of serverside notifications.\r\nHowever , RethinkDB still needs async driver for Tornadoweb, like Motor driver by MongoDB does , that is only deal-blocking  feature that blocking me changing from Mongo.\r\nI Love ReQL and I really believe that RethinkDB is NoSQL-Done-Right. \r\n\r\nAny Pointers on modifying current driver work async would be very good,I would like to contribute. (I am still quite new on Async and Tornado."},"comment":{"url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/comments/75351376","html_url":"https://github.com/rethinkdb/rethinkdb/issues/2622#issuecomment-75351376","issue_url":"https://api.github.com/repos/rethinkdb/rethinkdb/issues/2622","id":75351376,"user":{"login":"danielmewes","id":505365,"avatar_url":"https://avatars.githubusercontent.com/u/505365?v=3","gravatar_id":"","url":"https://api.github.com/users/danielmewes","html_url":"https://github.com/danielmewes","followers_url":"https://api.github.com/users/danielmewes/followers","following_url":"https://api.github.com/users/danielmewes/following{/other_user}","gists_url":"https://api.github.com/users/danielmewes/gists{/gist_id}","starred_url":"https://api.github.com/users/danielmewes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danielmewes/subscriptions","organizations_url":"https://api.github.com/users/danielmewes/orgs","repos_url":"https://api.github.com/users/danielmewes/repos","events_url":"https://api.github.com/users/danielmewes/events{/privacy}","received_events_url":"https://api.github.com/users/danielmewes/received_events","type":"User","site_admin":false},"created_at":"2015-02-21T02:28:34Z","updated_at":"2015-02-21T02:28:34Z","body":"Thanks so much for the info @ajdavis.\r\nThe Motor API for solving the loop problem looks nice.\r\n\r\nSo to update the complete example with your comments, we would have\r\n```py\r\n#... imports ...\r\n\r\n@gen.coroutine\r\ndef f():\r\n  # throws an exception on error, otherwise returns the run result (in this case a cursor)\r\n  feed = yield r.table(...).changes().run(conn, future=True)\r\n\r\n  while (yield feed.fetch_next):\r\n    # Is guaranteed to have a result since we have already waited on feed.fetch_next\r\n    print feed.next()\r\n\r\nIOLoop.current().run_sync(f)\r\n```\r\n\r\nDoes that look right?\r\n\r\n(sorry for my silly mistakes and questions, I'm pretty unexperienced with Python)"}}