Search code examples
pythonmultithreadingtornadosoanonblocking

Python + Tornado for accounting software


We're up to building a "Accounting Software (will call it as AS)" for mid and large sized companies. So AS is going to be comprehensive and have a lot of modules in relation. AS will run on cloud and has SOA approach.

What I'd like to ask is: Is using Python + Tornado good idea for development? What are the advantages and disadvantages? Especially when features like async (non-blocking), multithreading etc. are considered.

If you do not support this idea, which infrastructure is the best for our future AS you think?


Solution

  • Tornado is a good decision, if you need a lot of realtime events to be shown in your web application. For example chat (event: deliver new messages to all members of chat) or maybe some other actions (someone gives you a like and you know about it immediately). This is where async approach have all pros.

    Databases

    When you choose database, keep in mind, that you need an async driver for it. For example to use MongoDB best choice is motor. To use Postgresql you probably need a momoko.

    The cons of tornado are:

    • hard to start coding, if you are not familiar with async approach. For example, with django (most popular blocking python web framework) it is more easier to start, you have a lot of batteries included
    • smaller community, than django has
    • no ORM included
    • no admin part of site, you'll need to create it by yourself

    Also here you can find some additional thoughts about this topic and an example of tornado application.