[jira] [Commented] (THRIFT-1704) Tornado support (Python)
[ https://issues.apache.org/jira/browse/THRIFT-1704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13596702#comment-13596702 ] Hudson commented on THRIFT-1704: Integrated in Thrift #626 (See [https://builds.apache.org/job/Thrift/626/]) THRIFT-1704: Tornado support (Python) (Revision 20c81ad74c53c102692adec0e3c68d413899cabd) Result = ABORTED cpiro : https://git-wip-us.apache.org/repos/asf?p=thrift.gita=commith=20c81ad74c53c102692adec0e3c68d413899cabd Files : * tutorial/py.tornado/PythonServer.py * lib/py/src/TTornado.py * .gitignore * tutorial/py.tornado/Makefile.am * test/Makefile.am * tutorial/Makefile.am * test/py.tornado/Makefile.am * configure.ac * compiler/cpp/src/generate/t_py_generator.cc * tutorial/py.tornado/PythonClient.py * test/py.tornado/test_suite.py Tornado support (Python) Key: THRIFT-1704 URL: https://issues.apache.org/jira/browse/THRIFT-1704 Project: Thrift Issue Type: New Feature Components: Python - Compiler, Python - Library Affects Versions: 0.9 Environment: Tornado 2.4.0 (https://github.com/facebook/tornado/tree/v2.4.0) Reporter: Chris Piro Attachments: thrift-1704-tornado-2.patch, thrift-1704-tornado-3.patch, thrift-1704-tornado.patch Add support for Tornado, the non-blocking server framework released by Facebook. The attached patch adds a {{--gen py:tornado}} option to the compiler, support bits to Python library, a tutorial server and client, and a modest unit test. The attached patch (against {{trunk}}) has been running in the critical path of a production web site for several months with modest load. It seems to work fine, though no serious attempt has been made to optimize for performance. some snippets from the tutorial server and client code, respectively: {code} class CalculatorHandler(object): def add(self, n1, n2, callback): callback(n1 + n2) def main(): handler = CalculatorHandler() processor = Calculator.Processor(handler) pfactory = TBinaryProtocol.TBinaryProtocolFactory() server = TTornado.TTornadoServer(processor, pfactory) server.bind(9090) server.start(1) ioloop.IOLoop.instance().start() {code} {code} transport = TTornado.TTornadoStreamTransport('localhost', 9090) pfactory = TBinaryProtocol.TBinaryProtocolFactory() client = Calculator.Client(transport, pfactory) yield gen.Task(transport.open) yield gen.Task(client.ping) sum_ = yield gen.Task(client.add, 1, 1) print 1 + 1 = {}.format(sum_) {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (THRIFT-1704) Tornado support (Python)
[ https://issues.apache.org/jira/browse/THRIFT-1704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13594856#comment-13594856 ] Chris Piro commented on THRIFT-1704: Awesome Ryan, good to hear. I rebased it successfully the other night but held off committing until I tested it a bit more. I'll give it a shot now. Tornado support (Python) Key: THRIFT-1704 URL: https://issues.apache.org/jira/browse/THRIFT-1704 Project: Thrift Issue Type: New Feature Components: Python - Compiler, Python - Library Affects Versions: 0.9 Environment: Tornado 2.4.0 (https://github.com/facebook/tornado/tree/v2.4.0) Reporter: Chris Piro Attachments: thrift-1704-tornado-2.patch, thrift-1704-tornado.patch Add support for Tornado, the non-blocking server framework released by Facebook. The attached patch adds a {{--gen py:tornado}} option to the compiler, support bits to Python library, a tutorial server and client, and a modest unit test. The attached patch (against {{trunk}}) has been running in the critical path of a production web site for several months with modest load. It seems to work fine, though no serious attempt has been made to optimize for performance. some snippets from the tutorial server and client code, respectively: {code} class CalculatorHandler(object): def add(self, n1, n2, callback): callback(n1 + n2) def main(): handler = CalculatorHandler() processor = Calculator.Processor(handler) pfactory = TBinaryProtocol.TBinaryProtocolFactory() server = TTornado.TTornadoServer(processor, pfactory) server.bind(9090) server.start(1) ioloop.IOLoop.instance().start() {code} {code} transport = TTornado.TTornadoStreamTransport('localhost', 9090) pfactory = TBinaryProtocol.TBinaryProtocolFactory() client = Calculator.Client(transport, pfactory) yield gen.Task(transport.open) yield gen.Task(client.ping) sum_ = yield gen.Task(client.add, 1, 1) print 1 + 1 = {}.format(sum_) {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (THRIFT-1704) Tornado support (Python)
[ https://issues.apache.org/jira/browse/THRIFT-1704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13594456#comment-13594456 ] ryan chen commented on THRIFT-1704: --- We had using this patch in our production environment for about 2 month, any plan to merge into the next release? Tornado support (Python) Key: THRIFT-1704 URL: https://issues.apache.org/jira/browse/THRIFT-1704 Project: Thrift Issue Type: New Feature Components: Python - Compiler, Python - Library Affects Versions: 0.9 Environment: Tornado 2.4.0 (https://github.com/facebook/tornado/tree/v2.4.0) Reporter: Chris Piro Attachments: thrift-1704-tornado-2.patch, thrift-1704-tornado.patch Add support for Tornado, the non-blocking server framework released by Facebook. The attached patch adds a {{--gen py:tornado}} option to the compiler, support bits to Python library, a tutorial server and client, and a modest unit test. The attached patch (against {{trunk}}) has been running in the critical path of a production web site for several months with modest load. It seems to work fine, though no serious attempt has been made to optimize for performance. some snippets from the tutorial server and client code, respectively: {code} class CalculatorHandler(object): def add(self, n1, n2, callback): callback(n1 + n2) def main(): handler = CalculatorHandler() processor = Calculator.Processor(handler) pfactory = TBinaryProtocol.TBinaryProtocolFactory() server = TTornado.TTornadoServer(processor, pfactory) server.bind(9090) server.start(1) ioloop.IOLoop.instance().start() {code} {code} transport = TTornado.TTornadoStreamTransport('localhost', 9090) pfactory = TBinaryProtocol.TBinaryProtocolFactory() client = Calculator.Client(transport, pfactory) yield gen.Task(transport.open) yield gen.Task(client.ping) sum_ = yield gen.Task(client.add, 1, 1) print 1 + 1 = {}.format(sum_) {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (THRIFT-1704) Tornado support (Python)
[ https://issues.apache.org/jira/browse/THRIFT-1704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13581786#comment-13581786 ] Jeremy Katz commented on THRIFT-1704: - Any update on getting this into a release? Tornado support (Python) Key: THRIFT-1704 URL: https://issues.apache.org/jira/browse/THRIFT-1704 Project: Thrift Issue Type: New Feature Components: Python - Compiler, Python - Library Affects Versions: 0.9 Environment: Tornado 2.4.0 (https://github.com/facebook/tornado/tree/v2.4.0) Reporter: Chris Piro Attachments: thrift-1704-tornado-2.patch, thrift-1704-tornado.patch Add support for Tornado, the non-blocking server framework released by Facebook. The attached patch adds a {{--gen py:tornado}} option to the compiler, support bits to Python library, a tutorial server and client, and a modest unit test. The attached patch (against {{trunk}}) has been running in the critical path of a production web site for several months with modest load. It seems to work fine, though no serious attempt has been made to optimize for performance. some snippets from the tutorial server and client code, respectively: {code} class CalculatorHandler(object): def add(self, n1, n2, callback): callback(n1 + n2) def main(): handler = CalculatorHandler() processor = Calculator.Processor(handler) pfactory = TBinaryProtocol.TBinaryProtocolFactory() server = TTornado.TTornadoServer(processor, pfactory) server.bind(9090) server.start(1) ioloop.IOLoop.instance().start() {code} {code} transport = TTornado.TTornadoStreamTransport('localhost', 9090) pfactory = TBinaryProtocol.TBinaryProtocolFactory() client = Calculator.Client(transport, pfactory) yield gen.Task(transport.open) yield gen.Task(client.ping) sum_ = yield gen.Task(client.add, 1, 1) print 1 + 1 = {}.format(sum_) {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (THRIFT-1704) Tornado support (Python)
[ https://issues.apache.org/jira/browse/THRIFT-1704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13539234#comment-13539234 ] ryan chen commented on THRIFT-1704: --- hi Chris, I have a test of this patch on client side, when server throws exception ,the client alwayls throw AttributeError: 'Client' object has no attribute 'recv_ExceptionMessage', seems the 'recv_dispatch' in generated code doesn't handle 'mtype == TMessageType.EXCEPTION' properly. Tornado support (Python) Key: THRIFT-1704 URL: https://issues.apache.org/jira/browse/THRIFT-1704 Project: Thrift Issue Type: New Feature Components: Python - Compiler, Python - Library Affects Versions: 0.9 Environment: Tornado 2.4.0 (https://github.com/facebook/tornado/tree/v2.4.0) Reporter: Chris Piro Attachments: thrift-1704-tornado-2.patch, thrift-1704-tornado.patch Add support for Tornado, the non-blocking server framework released by Facebook. The attached patch adds a {{--gen py:tornado}} option to the compiler, support bits to Python library, a tutorial server and client, and a modest unit test. The attached patch (against {{trunk}}) has been running in the critical path of a production web site for several months with modest load. It seems to work fine, though no serious attempt has been made to optimize for performance. some snippets from the tutorial server and client code, respectively: {code} class CalculatorHandler(object): def add(self, n1, n2, callback): callback(n1 + n2) def main(): handler = CalculatorHandler() processor = Calculator.Processor(handler) pfactory = TBinaryProtocol.TBinaryProtocolFactory() server = TTornado.TTornadoServer(processor, pfactory) server.bind(9090) server.start(1) ioloop.IOLoop.instance().start() {code} {code} transport = TTornado.TTornadoStreamTransport('localhost', 9090) pfactory = TBinaryProtocol.TBinaryProtocolFactory() client = Calculator.Client(transport, pfactory) yield gen.Task(transport.open) yield gen.Task(client.ping) sum_ = yield gen.Task(client.add, 1, 1) print 1 + 1 = {}.format(sum_) {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (THRIFT-1704) Tornado support (Python)
[ https://issues.apache.org/jira/browse/THRIFT-1704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13472665#comment-13472665 ] Chris Piro commented on THRIFT-1704: Sounds good -- I'll hold off until the release is cut. Tornado support (Python) Key: THRIFT-1704 URL: https://issues.apache.org/jira/browse/THRIFT-1704 Project: Thrift Issue Type: New Feature Components: Python - Compiler, Python - Library Affects Versions: 0.9 Environment: Tornado 2.4.0 (https://github.com/facebook/tornado/tree/v2.4.0) Reporter: Chris Piro Attachments: thrift-1704-tornado-2.patch, thrift-1704-tornado.patch Add support for Tornado, the non-blocking server framework released by Facebook. The attached patch adds a {{--gen py:tornado}} option to the compiler, support bits to Python library, a tutorial server and client, and a modest unit test. The attached patch (against {{trunk}}) has been running in the critical path of a production web site for several months with modest load. It seems to work fine, though no serious attempt has been made to optimize for performance. some snippets from the tutorial server and client code, respectively: {code} class CalculatorHandler(object): def add(self, n1, n2, callback): callback(n1 + n2) def main(): handler = CalculatorHandler() processor = Calculator.Processor(handler) pfactory = TBinaryProtocol.TBinaryProtocolFactory() server = TTornado.TTornadoServer(processor, pfactory) server.bind(9090) server.start(1) ioloop.IOLoop.instance().start() {code} {code} transport = TTornado.TTornadoStreamTransport('localhost', 9090) pfactory = TBinaryProtocol.TBinaryProtocolFactory() client = Calculator.Client(transport, pfactory) yield gen.Task(transport.open) yield gen.Task(client.ping) sum_ = yield gen.Task(client.add, 1, 1) print 1 + 1 = {}.format(sum_) {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (THRIFT-1704) Tornado support (Python)
[ https://issues.apache.org/jira/browse/THRIFT-1704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13472052#comment-13472052 ] Chris Piro commented on THRIFT-1704: Does anyone else have feedback? The changes are self-contained in {{--gen py:tornado}}, so it shouldn't affect existing users. I'll go ahead and commit if there aren't any objections. Tornado support (Python) Key: THRIFT-1704 URL: https://issues.apache.org/jira/browse/THRIFT-1704 Project: Thrift Issue Type: New Feature Components: Python - Compiler, Python - Library Affects Versions: 0.9 Environment: Tornado 2.4.0 (https://github.com/facebook/tornado/tree/v2.4.0) Reporter: Chris Piro Attachments: thrift-1704-tornado-2.patch, thrift-1704-tornado.patch Add support for Tornado, the non-blocking server framework released by Facebook. The attached patch adds a {{--gen py:tornado}} option to the compiler, support bits to Python library, a tutorial server and client, and a modest unit test. The attached patch (against {{trunk}}) has been running in the critical path of a production web site for several months with modest load. It seems to work fine, though no serious attempt has been made to optimize for performance. some snippets from the tutorial server and client code, respectively: {code} class CalculatorHandler(object): def add(self, n1, n2, callback): callback(n1 + n2) def main(): handler = CalculatorHandler() processor = Calculator.Processor(handler) pfactory = TBinaryProtocol.TBinaryProtocolFactory() server = TTornado.TTornadoServer(processor, pfactory) server.bind(9090) server.start(1) ioloop.IOLoop.instance().start() {code} {code} transport = TTornado.TTornadoStreamTransport('localhost', 9090) pfactory = TBinaryProtocol.TBinaryProtocolFactory() client = Calculator.Client(transport, pfactory) yield gen.Task(transport.open) yield gen.Task(client.ping) sum_ = yield gen.Task(client.add, 1, 1) print 1 + 1 = {}.format(sum_) {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (THRIFT-1704) Tornado support (Python)
[ https://issues.apache.org/jira/browse/THRIFT-1704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13472057#comment-13472057 ] Jake Farrell commented on THRIFT-1704: -- Chris, i'm about to make the 0.9rc and would like to hold off on this till the next release as this hasnt been tested by more people yet Tornado support (Python) Key: THRIFT-1704 URL: https://issues.apache.org/jira/browse/THRIFT-1704 Project: Thrift Issue Type: New Feature Components: Python - Compiler, Python - Library Affects Versions: 0.9 Environment: Tornado 2.4.0 (https://github.com/facebook/tornado/tree/v2.4.0) Reporter: Chris Piro Attachments: thrift-1704-tornado-2.patch, thrift-1704-tornado.patch Add support for Tornado, the non-blocking server framework released by Facebook. The attached patch adds a {{--gen py:tornado}} option to the compiler, support bits to Python library, a tutorial server and client, and a modest unit test. The attached patch (against {{trunk}}) has been running in the critical path of a production web site for several months with modest load. It seems to work fine, though no serious attempt has been made to optimize for performance. some snippets from the tutorial server and client code, respectively: {code} class CalculatorHandler(object): def add(self, n1, n2, callback): callback(n1 + n2) def main(): handler = CalculatorHandler() processor = Calculator.Processor(handler) pfactory = TBinaryProtocol.TBinaryProtocolFactory() server = TTornado.TTornadoServer(processor, pfactory) server.bind(9090) server.start(1) ioloop.IOLoop.instance().start() {code} {code} transport = TTornado.TTornadoStreamTransport('localhost', 9090) pfactory = TBinaryProtocol.TBinaryProtocolFactory() client = Calculator.Client(transport, pfactory) yield gen.Task(transport.open) yield gen.Task(client.ping) sum_ = yield gen.Task(client.add, 1, 1) print 1 + 1 = {}.format(sum_) {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (THRIFT-1704) Tornado support (Python)
[ https://issues.apache.org/jira/browse/THRIFT-1704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13465817#comment-13465817 ] Chris Piro commented on THRIFT-1704: The unit tests should not fail if tornado support is not being used or available as this will be an optional configuration type Yes, that's a good idea. Could you suggest a way to do that? I could {{try}} to {{import tornado}} and skip the tests if that fails, or I could add some autotools magic to disable it at {{configure}} time. It's not clear to me which is better. Tornado support (Python) Key: THRIFT-1704 URL: https://issues.apache.org/jira/browse/THRIFT-1704 Project: Thrift Issue Type: New Feature Components: Python - Compiler, Python - Library Affects Versions: 0.9 Environment: Tornado 2.4.0 (https://github.com/facebook/tornado/tree/v2.4.0) Reporter: Chris Piro Attachments: thrift-1704-tornado.patch Add support for Tornado, the non-blocking server framework released by Facebook. The attached patch adds a {{--gen py:tornado}} option to the compiler, support bits to Python library, a tutorial server and client, and a modest unit test. The attached patch (against {{trunk}}) has been running in the critical path of a production web site for several months with modest load. It seems to work fine, though no serious attempt has been made to optimize for performance. some snippets from the tutorial server and client code, respectively: {code} class CalculatorHandler(object): def add(self, n1, n2, callback): callback(n1 + n2) def main(): handler = CalculatorHandler() processor = Calculator.Processor(handler) pfactory = TBinaryProtocol.TBinaryProtocolFactory() server = TTornado.TTornadoServer(processor, pfactory) server.bind(9090) server.start(1) ioloop.IOLoop.instance().start() {code} {code} transport = TTornado.TTornadoStreamTransport('localhost', 9090) pfactory = TBinaryProtocol.TBinaryProtocolFactory() client = Calculator.Client(transport, pfactory) yield gen.Task(transport.open) yield gen.Task(client.ping) sum_ = yield gen.Task(client.add, 1, 1) print 1 + 1 = {}.format(sum_) {code} particular concerns: * The library and generated code has only been tested with Tornado 2.4.0. Is there a preferred spot to note that dependency? * The unit test relies on Tornado to run and will fail if it's not available at {{make check}} time. What's the proper way to depend on Tornado / skip the test where Tornado is unavailable? -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (THRIFT-1704) Tornado support (Python)
[ https://issues.apache.org/jira/browse/THRIFT-1704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13465337#comment-13465337 ] Jake Farrell commented on THRIFT-1704: -- Chris, thank you for the initial work on this patch. The latest stable version of tornado should be supported, currently its 2.4.0 so the patch is good in that regard. The unit tests should not fail if tornado support is not being used or available as this will be an optional configuration type Tornado support (Python) Key: THRIFT-1704 URL: https://issues.apache.org/jira/browse/THRIFT-1704 Project: Thrift Issue Type: New Feature Components: Python - Compiler, Python - Library Affects Versions: 0.9 Environment: Tornado 2.4.0 (https://github.com/facebook/tornado/tree/v2.4.0) Reporter: Chris Piro Attachments: thrift-1704-tornado.patch Add support for Tornado, the non-blocking server framework released by Facebook. The attached patch adds a {{--gen py:tornado}} option to the compiler, support bits to Python library, a tutorial server and client, and a modest unit test. The attached patch (against {{trunk}}) has been running in the critical path of a production web site for several months with modest load. It seems to work fine, though no serious attempt has been made to optimize for performance. some snippets from the tutorial server and client code, respectively: {code} class CalculatorHandler(object): def add(self, n1, n2, callback): callback(n1 + n2) def main(): handler = CalculatorHandler() processor = Calculator.Processor(handler) pfactory = TBinaryProtocol.TBinaryProtocolFactory() server = TTornado.TTornadoServer(processor, pfactory) server.bind(9090) server.start(1) ioloop.IOLoop.instance().start() {code} {code} transport = TTornado.TTornadoStreamTransport('localhost', 9090) pfactory = TBinaryProtocol.TBinaryProtocolFactory() client = Calculator.Client(transport, pfactory) yield gen.Task(transport.open) yield gen.Task(client.ping) sum_ = yield gen.Task(client.add, 1, 1) print 1 + 1 = {}.format(sum_) {code} particular concerns: * The library and generated code has only been tested with Tornado 2.4.0. Is there a preferred spot to note that dependency? * The unit test relies on Tornado to run and will fail if it's not available at {{make check}} time. What's the proper way to depend on Tornado / skip the test where Tornado is unavailable? -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira