Event-driven framework (other than Twisted)?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • James Mills

    #16
    Re: Event-driven framework (other than Twisted)?

    On 10/2/08, Phillip B Oldham <phillip.oldham @gmail.comwrote :
    On Oct 2, 1:32 am, "James Mills" <prolo...@short circuit.net.auw rote:>
    Thanks for the example, but its not loading.
    Sorry my VPS has been down for quite
    some time today :/ Not happy!

    Here is the sample:

    <code>
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # vim: set sw=3 sts=3 ts=3

    import optparse

    from pymills import event
    from pymills.event import manager
    from pymills.net.soc kets import TCPServer
    from pymills.event.c ore import listener, Component
    from pymills.net.htt p import HTTP, Response, Dispatcher
    from pymills import __version__ as systemVersion

    USAGE = "%prog [options] [path]"
    VERSION = "%prog v" + systemVersion

    ###
    ### Functions
    ###

    def parse_options() :
    """parse_option s() -opts, args

    Parse any command-line options given returning both
    the parsed options and arguments.
    """

    parser = optparse.Option Parser(usage=US AGE, version=VERSION )

    parser.add_opti on("-b", "--bind",
    action="store", default="0.0.0. 0:8000", dest="bind",
    help="Bind to address:port")

    opts, args = parser.parse_ar gs()

    return opts, args

    ###
    ### Components
    ###

    class Test(Component) :

    channel = "/"

    @listener("inde x")
    def onINDEX(self, request, response):
    self.send(Respo nse(response), "response")

    @listener("hell o")
    def onHello(self, request, response):

    if request.cookie. get("seen", False):
    response.body = "Seen you before!"
    else:
    response.body = "Hello World!"
    response.cookie["seen"] = True

    self.send(Respo nse(response), "response")

    @listener("test ")
    def onTEST(self, request, response):
    response.body = "OK"
    self.send(Respo nse(response), "response")

    class WebServer(TCPSe rver, HTTP): pass

    ###
    ### Main
    ###

    def main():
    opts, args = parse_options()

    if ":" in opts.bind:
    address, port = opts.bind.split (":")
    port = int(port)
    else:
    address, port = opts.bind, 80

    server = WebServer(port, address)
    dispatcher = Dispatcher()

    event.manager += server
    event.manager += Test()
    event.manager += dispatcher

    while True:
    try:
    manager.flush()
    server.poll()
    except KeyboardInterru pt:
    break

    ###
    ### Entry Point
    ###

    if __name__ == "__main__":
    main()
    </code>

    --
    --
    -- "Problems are solved by method"

    Comment

    Working...