которой можно изменять только из MainThread - это connection для RMQ в pika. Проблема в том, что мне надо из другого потока заставить MainThread изменить состояние этой сущности. (Особенность библиотеки такова, что connection не потокобезопасен и если изменять его состояние из другого потока, то раз через раз будет вылетать ошибка).
Как из потока А заставить поток Б выполнить функцию в контексте потока Б?
Можно сообщения кидать через потокобезопасную очередь
тогда в основном потоке должен быть loop который её бесконечно опрашивает?
ну я пока думаю что либо так, либо запускать соединение в отдельном потоке и в случае чего не изменять его состояние, а просто завершать старый поток (в котором старое соединение) и открывать новый поток с новым соединением в нужном состоянии хз даже что лучше
Так играться с потоками звучит не очень безопасно и затратно
Уверен что "with lock" не поможет в потоке А?
У меня была немножко похожая проблема с pika+rmq и theading.Lock при работе с конюшенном из другого потока помог
хз, я прочел как - либо меняйте connection в одном потоке, либо ловите ошибки( есть асинхронная пика, но я пока туда не хочу
в итоге более правильным считаешь делать eventloop через очередь?
Обсуждают сегодня