from circuits.web import Server, Controller
# NOTE task is a PEP8 violation
from circuits.core import Worker, task, Debugger
import os
def complicated_task():
"""This is so complex I need a worker!"""
# import time
# time.sleep(3)
return 'Task worker ' + str(os.getpid())
worker = Worker(process=True)
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')
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()).register(app_server)
# NOTE You must register before starting additional
# procesesses, not sure why.
app_server.start(process=True)
app_server.start(process=True)
app_server.start(process=True)
app_server.run()