daemonizing webpy does not serve static files

341 views
Skip to first unread message

Lucas Doyle

unread,
Sep 27, 2011, 5:00:38 PM9/27/11
to web.py
Hello,

I'm having quite a bit of trouble coaxing the built in wsgi server in
webpy to host static files while daemonized. My goal here is to have a
local (daemonized) webserver I can dev on while being able to push to
my production server running mod_wsgi. So far webpy has been great in
that capacity, however now that I have my "hello world" working the
way I want locally and remotely, I can't serve static files.

I'm using this technique to daemonize:
http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/

According to webpy, all I have to do is make a directory called
'static' in the same spot as my application code, and it will serve
them statically. When I so this and run the code below, I get 404
pages for my static files. I suspect the problem might be something to
do with threading and/or me not subclassing correctly, but I have not
been able to figure it out.

The code I'm trying to run is this:


#!/usr/bin/env python
import sys, time, os
import web
from daemon import Daemon

urls = (
'/', 'hello'
)

class hello:
def GET(self):
return "Hello, world!"

class server(Daemon):
def run(self):
app = web.application(urls, globals(), autoreload=True)
app.internalerror = web.debugerror
app.run()

if __name__ == "__main__":
if len(sys.argv) == 2:
daemon = server('/home/ld/ABS/server.pid') # make the pidfile
appear here
if 'start' == sys.argv[1]:
print "starting local webserver"
# need to overwrite argv[1] so webpy gets the right port
number
sys.argv[1] = '8080'
daemon.start()
elif 'stop' == sys.argv[1]:
print "stopping local webserver"
daemon.stop()
elif 'restart' == sys.argv[1]:
print "restarting local webserver"
daemon.restart()
else:
print "Unknown command"
sys.exit(2)
sys.exit(0)
else:
print "usage: %s start|stop|restart" % sys.argv[0]
sys.exit(2)

# mod_wsgi will catch this instance of the wsgi application
app = web.application(urls, globals(), autoreload=False)
application = app.wsgifunc()



Thanks for your help!

Lucas Fernandez

unread,
Sep 28, 2011, 5:15:20 AM9/28/11
to we...@googlegroups.com
Hello,

You can serve statics files with webpy

#!/usr/bin/python
# -*- coding: utf-8 -*-

import web

urls = (
'/(js|css|img)/(.*)', 'static',
'/', 'home',
)

app = web.application(urls, globals(), autoreload=False)
application = app.wsgifunc()

class home:
def GET(self):
return "hello"

class static:
def GET(self, media, file):
try:
f = open(media+'/'+file, 'r')
return f.read()
except:
return '' # you can send an 404 error here if you want

--
Kasey

> --
> You received this message because you are subscribed to the Google Groups "web.py" group.
> To post to this group, send email to we...@googlegroups.com.
> To unsubscribe from this group, send email to webpy+un...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/webpy?hl=en.
>

PGP.sig
Reply all
Reply to author
Forward
0 new messages