【发布时间】:2016-08-04 01:28:01
【问题描述】:
所以我正在尝试使用以下代码从 C++ 程序的 RPC 调用到 Flask 服务器内启动一个新线程
@api.route("/open_api_connection")
def open_api_connection():
# spawn server
from threading import Thread
thread = Thread(target = start_message_server)
thread.start()
return jsonify({"host":"localhost", "port":8080})
def start_message_server():
while True:
time.sleep(1)
print "in server"
但是当我通过 C++ 程序向这个服务器发送一个 HTTP 请求时,Flask 服务器变得不可能用 CTRL-c 杀死。我猜新线程不知何故变成了僵尸。 ps 表明即使在 CTRL-c 之后该进程仍在运行。 CTRL-z 也不起作用...我正在使用内置服务器启动 Flask 服务器,就像这样
api = Flask(__name__)
# import stuff ...
if __name__ == "__main__":
# check if the port number that is used to run this script has been
# provided or not
if len(sys.argv) == 2:
port = sys.argv[1]
else:
sys.stderr.write("Usage: python " + sys.argv[0] + " <port_number>\n")
sys.exit(1)
api.run(port = int(sys.argv[1]), threaded = True)
我正在通过 C++ 中的调用连接到该服务器,就像这样
open_connection("localhost", "8000");
任何想法为什么会发生这种情况以及如何解决这个问题?
【问题讨论】:
标签: python c++ multithreading flask rpc