Apache provides the function ap_construct_url(). Its purpose is:
char *ap_construct_url (pool *p, const char *uri, const request_rec *r)
This function builds a fully qualified URI string from the path specified
by uri, using the information stored in the request record r to determine
the server name and port. The port number is not included in the string
if it is the same as the default port 80.
For example, imagine that the current request is directed to the virtual
server www.modperl.com at port 80. Then the following call will return
the string http://www.modperl.com/ index.html:
char *url = ap_construct_url(r->pool, "/index.html", r);
This may be a solution to issue previously discussed about how to create a full URL for purpose of doing a redirect.
Even if not perfect, should be exposed as req.construct_url(). After all, the Apache folks are more likely to get this correct and maintain it, better than we can do our own version in Python.