Skip to content
This repository has been archived by the owner on Jul 10, 2019. It is now read-only.

Technology Stack

Shrikrishna Holla edited this page Dec 16, 2013 · 2 revisions

This document will be updated as and when new technologies are utilized

Node.js

The main process will be implemented in node.js
The rationale for choosing nodejs over others is the following (I could, of course, be wrong!):

  • Single threaded and concurrent. This allows to perform all required tasks, without being resource-hungry
  • Event model. It makes sense to look at queries the bot gets as events, which have to be handled asynchronously. For example, if UserA asks a query that takes some time to respond to, and in meantime, UserB requests something that can be instantly answered, UserB shouldn't need to wait for UserA's query completion
  • Async I/O. In nodejs, I/O operations are non blocking. So tasks like reading logs from files, network operations don't block; so even as a file is being read, the next query can be handled.

Celery

Celery will be used as a task queue. It will be used when CPU intensive tasks need to be performed. An adapter will be written that interfaces with a node celery library. This is so that, if the library's maintenance stops, or we choose to go with a different task queue, the programming interfaces will remain the same

NLTK

NLTK will be used to process Natural Language Queries. As with Celery, an adapter will be written over a node library that creates and communicates with Python processes.

Clone this wiki locally