我在webapp的层次结构的最顶层发起了一个队列。
从主入口点开始,我将其中一个队列放在一个工作线程中,我想将相同的队列传递给Pyramid控制器,以便他们可以进行通信。
这是旋转线程和金字塔的主要切入点:
def main(global_config, **settings):
sql_session = initialize_sql()
session_factory = SignedCookieSessionFactory(''.join(random.choice(string.printable) for i in range(64)),
secure=True,
httponly=True)
Queues = namedtuple('Queues', 'db requests_from_proxy requests_to_proxy responses')
queue = Queues(Queue(), Queue(), Queue(), Queue())
config = Configurator(settings=settings)
config.include("cornice")
config.scan("fart.Controller")
config.set_session_factory(session_factory)
config.my_queue = queue
proxy_thread = Thread(target=init_proxy, args=(queue, config,))
db_thread = Thread(target=init_worker, args=(queue, sql_session,))
proxy_thread.start()
db_thread.start()
return config.make_wsgi_app()
这是控制器:
""" Cornice services.
"""
from cornice import Service
import json
request_service = Service(name='request', path='/api/request')
@request_service.get()
def get_request(request):
print dir()
return json.dumps(queue.requests_from_proxy.get())
我花了几个小时查看文档和一些示例,但我无法弄清楚如何在Controller中从主入口点启动Queue。有什么想法吗?