| Server IP : 20.75.53.88 / Your IP : 216.73.217.72 [ Web Server : Apache System : Linux VMRALP-3 4.4.0-256-generic #290~14.04.1-Ubuntu SMP Thu Jun 20 09:24:50 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29+esm15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, Domains : 3 Domains MySQL : ON | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/self/root/usr/share/doc/python-twisted-web/examples/ |
Upload File : |
# Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.
"""
This example demostrates how to render the output of a system process to a
twisted web server.
In order to run this, you need to have fortune installed. Fortune is a simple
game that displays a random message from a database of quotations. You will need
to change the path of the fortune program if it's not in the "/usr/game"
directory.
To test the script, rename the file to fortune.rpy, and move it to any
directory, let's say /var/www/html/
Now, start your Twisted web server:
$ twistd -n web --path /var/www/html/
And visit http://127.0.0.1:8080/fortune.rpy with a web browser.
"""
from twisted.web.resource import Resource
from twisted.web import server
from twisted.internet import utils
from twisted.python import util
class FortuneResource(Resource):
"""
This resource will only repond to HEAD & GET requests.
"""
# Link your fortune program to /usr/games or change the path.
fortune = "/usr/games/fortune"
def render_GET(self, request):
"""
Get a fortune and serve it as the response to this request.
Use L{utils.getProcessOutput}, which spawns a process and returns a
Deferred which fires with its output.
"""
request.write("<pre>\n")
deferred = utils.getProcessOutput(self.fortune)
deferred.addCallback(lambda s:
(request.write(s+"\n"), request.finish()))
deferred.addErrback(lambda s:
(request.write(str(s)), request.finish()))
return server.NOT_DONE_YET
resource = FortuneResource()