changelog shortlog tags changeset files revisions annotate raw

TODO

changeset 52: 1b01f2aecf8e
child:2a29ce220c1a
author: manlio
date: Fri Sep 21 14:10:45 2007 +0200 (4 years ago)
permissions: -rw-r--r--
description: Added the TODO file, with a detailed roadmap.
1nginx mod_wsgi TODO
2===================
3
4This is the detailed TODO list for nginx mod_wsgi, with a roadmap.
5
6Testing
7-------
8
9mod_wsgi **needs** testing.
10
11We need to test:
12 * compilation and correct functioning with older and newer nginx
13 versions.
14
15 mod_wsgi is know to compile and work with `nginx` 0.5.31.
16
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`.
20
21 * compilation and correct functioning on all the platforms
22 supported by nginx.
23
24 mod_wsgi is know to compile and work on a `Intel Core2 T7200`, on
25 `Debian Etch` `i386`.
26
27 * correct functioning of threaded WSGI applications.
28
29 Since nginx does not use threads, mod_wsgi **do not** initialize
30 thread support.
31
32 This should not be a problem, since the initialization is done by
33 the `thread` module, when threads are actually used.
34
35Documentation
36-------------
37
38mod_wsgi **needs** documentation.
39
40However we can use the very good documentation that cames with
41`Apache` mod_wsgi: http://code.google.com/p/modwsgi/w/list
42
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.
46
47
48Roadmap
49-------
50
510.0.2:
52 * Add support to SCRIPT_NAME and PATH_INFO enviroment variables.
53 Unfortunately nginx does not support them.
54
55 * Add support for executing more then one WSGI application for nginx
56 server, with support to multiple subinterpreters.
57
580.0.3:
59 * Add support for the full WSGI 2.0 draft, that is remove the limitation
60 that `app_iter` **must** yeld only one item.
61
62 This is quite involved, since we need to face the asyncronous nature
63 of nginx, handling the NGX_AGAIN error status.
64
65 Once we implement this, we can (somehow) conform to the WSGI
66 requirement: ::
67
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.
71
72 and: ::
73
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
78 block.
79
800.0.4:
81 * Add support for the `wsgi.file_wrapper` extension.
82
83 I'm adding this here, since it should not be hard to implement.
84
850.0.5:
86 * *Finally*, implement the current WSGI 1.0 PEP.
87
88 However, we will not implement the *required* `write` callable,
89 since it is not easy implementable for nginx.
90
91 The problem is with NGX_AGAIN handling. Of course this can not be
92 handled by the WSGI application.
93
940.0.6:
95 * Implement the experimental extension for supporting asynchronous
96 WSGI applications:
97 http://comments.gmane.org/gmane.comp.python.twisted.web/632?set_lines=100000
98
99 * Implement a `ngx_reactor` (or `ngx_event`) extension module, to
100 offer access to the nginx event system from a WSGI application.
101
1020.0.7:
103 * Add support for logging Python exceptions.