У меня есть Flask-SocketIO-сервер, который инициализирует графический интерфейс в отдельном потоке.
if __name__ == '__main__':
if len(sys.argv) > 1 and sys.argv[1] == 'dev':
print "Running Flask-SocketIO on dev mode"
else:
print "Running Flask-SocketIO on production mode"
print 'Running Graphical User Interface...'
thread.start_new_thread(display_react.main, ())
print 'Initializing server'
socketio.run(app, debug=False)
GUI - это в основном пример cefpthon3, который использует wxPython, но вместо обычного браузера он отображает только определенную страницу, обслуживаемую сервером. На данный момент я хочу, чтобы приложение закрылось, когда я закрываю GUI. Для этого я создал маршрут на сервере, который (при вызове) закроет сервер.
@app.route('/shutdown', methods=['GET'])
def shutdown():
server_request.shutdown()
socketio.stop()
print "Trying to close..."
return 'Server shutting down...'
И этот маршрут вызывается, когда перед закрытием wxPython. Однако эта ошибка появляется перед завершением работы сервера:
Может ли кто-нибудь помочь мне решить или скрыть это?
wxPython почти всегда должен быть основным потоком, и, скорее всего, вы видите эту ошибку, утверждающую на wxIsMainThread
. Одним из нескольких простых способов было бы запустить wxPython в качестве основного потока/приложения и запустить Flask в потоке.
Я думаю, что это будет работать лучше. Однако вы можете спросить у группы wxPython для других обходных решений.