在我正在进行的项目中,我需要使用Tornado覆盖Behave服务,因此我想在运行每个方案之前启动龙卷风服务的实例。
天真地尝试将循环作为一部分运行之前似乎锁定了执行:
from tornado import ioloop
from tornadoadapter.applications import APPLICATION
def before_all(context):
print "Service running on port 8000"
APPLICATION.listen(8000)
ioloop.IOLoop.instance().start()
所以这可能不是我需要的。
答案 0 :(得分:3)
您的IOLoop正在主线程中运行,因此它已被阻止。你可以在一个单独的线程或进程中完成它。
from multiprocessing import Process
from tornado import ioloop
from tornadoadapter.applications import APPLICATION
def run_server():
print "Service running on port 8000"
APPLICATION.listen(8000)
ioloop.IOLoop.instance().start()
def before_all(context):
context.server_thread = Process(target=run_server)
context.server_thread.deamon = True
context.server_thread.start()