![]() |
|
There are a few known problems with modjy. They include
| Problem | Description | Solution |
|---|---|---|
| Poor import mechanism | At the moment, modjy does not properly report exceptions that happen inside application code. This is because I have used execfile() to load the application code, rather than implemented a proper import mechanism. This will be fixed. | Implement a proper import mechanism. For now, best to stick with the standard exception handler. |
| Inefficient single-thread-model | If you opt to turn multithreading off in modjy, then access to your application objects will synchronized or locked, so that all requests are served in series, one at a time. If your application objects take a long time, say 200 milliseconds, then you'll only be able to serve 5 requests per second. Ideally, what is required is a mechanism that caches single-threaded application objects per-thread, using ThreadLocal variables. | Implement a per-thread STM application object cache using java ThreadLocals. |
| Varying behaviour across containers on illegal stream read | You can read about this problem under Reading beyond content-length on wsgi.input. | Implement a wrapper around wsgi.input which optionally standardises behaviour across containers. |
| Not enough diagnostic output | The facilities for logging diagnostic output are present in modjy: they're just not used enough right now. | Spend some more time sprinkling diagnostic messages through the code. |
As it stands, modjy should be a reasonably solid WSGI server. Modjy's design is so simple that there's not an awful lot that can go wrong. So although I don't consider it ready for production use, it's only a few days testing and QA'ing away from being ready for the prime-time.
I have 75% of a full unit test suite written for modjy, based on MockRunner. When that test suite is complete, and when modjy fully passes the test suite, then I will upgrade the version number of modjy to 1.0.
Meantime, if there are any blatant bugs in modjy, then I'll be happy to fix them. Simply send me an email with the details, and hopefully instructions to recreate the problem, and I'll try to fix it.