codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#!/usr/bin/env python import os from circuits.web import Server, Controller # NOTE task is a PEP8 violation # XXX: Yes I know :) But there's a very good reason for it! from circuits.core import Worker, task, Debugger def complicated_task(*args, **kwargs): """This is so complex I need a worker!""" print(args, kwargs) import time time.sleep(3) return 'Task worker ' + str(os.getpid()) class Root(Controller): """The root of the application""" def index(self): """The index""" return 'Hello World!' def redirect_target(self): """Just a normal url handler""" return "Hello, you redirected to me?" def redirecter(self): """This is how a redirect works""" return self.redirect('/redirect_target') def bad_redirecter(self): """This is always fun!""" return self.redirect('/bad_redirecter') def sleeper(self): """Timer that blocks this loop, let's you see other event loops, pids. Otherwise the event loop is faster then we can request through the browser. """ import time time.sleep(1) return str(os.getpid()) def sleep_worker(self): """A Worker""" result = yield self.call(task(complicated_task), 'worker') yield result # XXX: return is invalid inside a generator #return result # print(next(result)) # value_obj = next(result) # print(value_obj.value) # if result: # return 'Success' # else: # return 'Failure' app_server = Server(("0.0.0.0", 9000)) (Root() + Debugger() + Worker(process=True)).register(app_server) # NOTE You must register before starting additional # procesesses, not sure why. # XXX: Because registering creates a connected component graph # XXX: Without registering you'd start uesless (almost blank) processes # XXX: COuld get ugly/messy here... Might not work so well with multiprocessing.Pool/circuits.Worker combo. #app_server.start(process=True) #app_server.start(process=True) #app_server.start(process=True) app_server.run()
Private
[
?
]
Run code
Submit