4This is the detailed TODO list for nginx mod_wsgi, with a roadmap.
9mod_wsgi **needs** testing.
12 * compilation and correct functioning with older and newer nginx
15 mod_wsgi is know to compile and work with `nginx` 0.5.31.
17 Adrian Perez de Castro reported that `mod_wsgi` does not compiles on
18 `nginx` 0.6.11, due to `ngx_http_discard_body` function renamed to
19 `ngx_http_discard_request_body`.
21 * compilation and correct functioning on all the platforms
24 mod_wsgi is know to compile and work on a `Intel Core2 T7200`, on
27 * correct functioning of threaded WSGI applications.
29 Since nginx does not use threads, mod_wsgi **do not** initialize
32 This should not be a problem, since the initialization is done by
33 the `thread` module, when threads are actually used.
38mod_wsgi **needs** documentation.
40However we can use the very good documentation that cames with
41`Apache` mod_wsgi: http://code.google.com/p/modwsgi/w/list
43Of course there are some differences in the implementation (since nginx
44is asychronous, with no threads), however the mod_wsgi code follows,
45where possibile, the implementation of `Apache` mod_wsgi.
52 * Add support to SCRIPT_NAME and PATH_INFO enviroment variables.
53 Unfortunately nginx does not support them.
55 * Add support for executing more then one WSGI application for nginx
56 server, with support to multiple subinterpreters.
59 * Add support for the full WSGI 2.0 draft, that is remove the limitation
60 that `app_iter` **must** yeld only one item.
62 This is quite involved, since we need to face the asyncronous nature
63 of nginx, handling the NGX_AGAIN error status.
65 Once we implement this, we can (somehow) conform to the WSGI
68 The server or gateway must transmit the yielded strings to the
69 client in an unbuffered fashion, completing the transmission of
70 each string before requesting another one.
74 WSGI servers, gateways, and middleware **must not** delay the
75 transmission of any block; they **must** either fully transmit the
76 block to the client, or guarantee that they will continue
77 transmission even while the application is producing its next
81 * Add support for the `wsgi.file_wrapper` extension.
83 I'm adding this here, since it should not be hard to implement.
86 * *Finally*, implement the current WSGI 1.0 PEP.
88 However, we will not implement the *required* `write` callable,
89 since it is not easy implementable for nginx.
91 The problem is with NGX_AGAIN handling. Of course this can not be
92 handled by the WSGI application.
95 * Implement the experimental extension for supporting asynchronous
97 http://comments.gmane.org/gmane.comp.python.twisted.web/632?set_lines=100000
99 * Implement a `ngx_reactor` (or `ngx_event`) extension module, to
100 offer access to the nginx event system from a WSGI application.
103 * Add support for logging Python exceptions.