Re: Modpython, Apache, Matplotlib which is responsible

Bart <[email protected]>
Newsgroups gmane.comp.python.mod_python
Message-ID <[email protected]>
On Thu, Mar 19, 2009 at 4:09 AM, Ron Phelps <rphelps-phKd+DpA3E5Wk0Htik3J/[email protected]> wrote:
> Trying to get Apache to display an graph plotfile.png but get an error
>
> The website has
>
> index.py with links to
>
> page1.py
> page2.py
> ...
> pagen.py
>
> page1.py calls matplotlib to plot some data retrieved from a database.
> Matplotlib can't write to the www-data root (permissions problem) so I
> have it write to /tmp.
> I then copy the file to the www-data root using pexpect.run('cp
> plotfile.png').
> However page1.py fails to display the graph. The error is
> "can't find /page1.py/plotfile.png."  Page1.py is not a directory
> The file has the owner:group of www-data.
>
> I have verified that the file is in the www-root directory.
>
> Don't know if it is an issue but page1.py has two frames. One which is
> for displaying data.
>
> Is Apache or Mod_python the cause?


You seem to have used SetHandler, to hand over control to mod_python
unconditionally (for all URLs).
You also seem to be using mod_python.publisher, which is fine
(although it's a pain with relative URLs), but which won't fall back
to serving files, which things like vampire will do.

IIRC, you can just use AddHandler to handle only .py URLs via
mod_python (though I'm not sure, I only used publisher briefly and
it's a good while back now).

A simpler option may be copying those files to a subdirectory and
telling apache "SetHandler none" for it, which gets you basic apache
treatment (in this case for its file serving).


By the way, you can have matplotlib serve things via memory, avoiding
the bother of files completely (for most backends, anyway).


--Bart
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.