forked from pesos/optimus
-
Notifications
You must be signed in to change notification settings - Fork 0
Technology Stack
Shrikrishna Holla edited this page Dec 16, 2013
·
2 revisions
This document will be updated as and when new technologies are utilized
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 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 library, the programming interfaces will remain the same
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.