1

Our new project will get a lot of concurrent requests. I don't have a lot of experience with this. Any suggestions? I've looked at NodeJS, Twisted, EventMachine & Tornado but I don't have any way to measure how suitable they will be.

Any suggestions?

CamelCamelCamel
  • 5,200
  • 8
  • 61
  • 93

4 Answers4

1

Ask yourself the following questions (at least) and then decide:

  1. What language do I (or/and my colleagues) know? If you know Python you could choose Twisted, if you know Ruby you can choose EventMachine or if you are really good with JavaScript you could choose Node.js. (only Erlang wouldn't have an advantage here)

  2. Do I want to use a language construct (Erlang, Node.js) or a library (Twisted, EventMachine)?

  3. Do I need a lot of resources, community support, books etc? Check out for yourself how big are their channels on IRC, you'll make an idea. (I may be biased, but I see tons of people on the Node.js channels and they are really helpful)

  4. How mature do you want the framework to be? (Node for example has 2 years, Erlang has been officially released in `98, etc)

  5. What companies/products are using what async frameworks? (for example CouchDB has been built with Erlang, Node.js is used by Github, Linkedin and others, EventMachine is used by PostRank, 37 signals etc)

Glyph
  • 31,152
  • 11
  • 87
  • 129
alessioalex
  • 62,577
  • 16
  • 155
  • 122
1

The suitability of specific non-blocking framework may be dependent on certain aspects, such as:

  • Preferred language/platform - someone can be versed in specific language which might speed up the development. Also finding a skilled people might be a problem.
  • Availability of non-blocking libraries for your framework - for example most of the node.js modules are by default non-blocking compared to other frameworks where you might run into a problem of finding a non-blocing version of library which offers desired functionality.
  • Documentation and community support is essential.
yojimbo87
  • 65,684
  • 25
  • 123
  • 131
1

As others say - you should go with the one that has the non-blocking libraries (e.g. DB drivers) you need and, if possible, uses the language your team knows. Popularity may also be an advantage.

If you're programming in Python, gevent might also be a good option. There is even a Socket.IO implementation.

Juliusz Gonera
  • 4,658
  • 5
  • 32
  • 35
1

Develop a metric to measure suitability, then use that metric. How can anyone here tell you which one is the most suitable if you don't provide any basis for evaluation?

Wait, scratch that. Twisted is the most suitable for everything, always, no matter what.

Glyph
  • 31,152
  • 11
  • 87
  • 129