pythonweb.py

Running a python script from webpy


I setup a lighttpd server along with webpy and fastcgi. I am trying to simply run a python script everytime the wenpy app is accessed. Though it seems even when I give the normal python code to execute the script it does nothing. So Id like to be able to run this script, any idea would be helpful.

#!/usr/bin/env python

import web, os

urls = (
    '/(.*)', 'hello'
)
app = web.application(urls, globals())

class hello:
    def GET(self, name):
        os.system("python /srv/http/script/script.py")
        if not name:
            name = 'world'
        return "Running"

web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)
if __name__ == "__main__":
    app.run()

Solution

  • Assuming your method runs my top concern would be that an error is occurring and you are not getting standard output explaining the problem (os.system will get the return value, e.g. exit code). Python docs recommend replacing it with subprocess, I like to do this:

    from subprocess import Popen, PIPE
    proc = Popen('ls', shell=True, stdout=PIPE)
    proc.wait()
    proc.communicate()