Kivy와 Flask를 Multiprocess로 돌리기
2018.02.03 15:08
Kivy안에서 Flask돌리면서 Queue를 이용하여 Flask에서 Kivy로 데이터 보내기
Thread 대신 Multiprocess로 해서 아래와 같은 식으로 짜면 일단은 돈다.
class ThreadMain:
is_running = True
def __init__(self):
self.flaskqueue_thread = threading.Timer(1, self.threadFlaskQueue)
def threadFlaskQueue(self, mode = "none"):
thread = self.flaskqueue_thread
if (mode == "start"):
thread.start()
elif (mode == "stop"):
thread.cancel()
else:
while self.is_running == True:
if app_main.que.qsize() > 0:
self.que_data = app_main.que.get_nowait()
print("Queue:: " + self.que_data)
time.sleep(0.05)
thread.cancel()
class AppMain(App):
th_obj = ""
def build(self):
self.que = Manager().Queue()
self.flask_proc = Process(target=flaskRun, args=(self.que,))
self.flask_proc.start()
self.triggerThreads()
# 이하 kvlang 설정 등 생략
def on_stop(self):
# 종료시 쓰레드 종료
self.th_obj.is_running = False
# 종료시 플라스크 종료
self.flask_proc.terminate()
self.flask_proc.join()
def triggerThreads(self, mode="none"):
if self.th_obj != "":
self.th_obj.threadFlaskQueue("stop")
self.th_obj = ThreadMain()
self.th_obj.is_running = True
self.th_obj.threadFlaskQueue("start")
from flask import Flask, request
flask = Flask(__name__)
@flask.route('/')
def frontPage():
result = 'Hello World!!'
flask.que.put(result)
return result
def flaskRun(que):
flask.que = que
flask.que.put('Flask begin')
flask.run(host='0.0.0.0')
from multiprocessing import Process, Manager, Queue
if __name__ == '__main__':
app_main = AppMain()
app_main.run()
Kivy랑 Flask간 데이터 맞교환 하려면 Queue 두 개 돌리면 될 거 같다.
끝.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
15 | 윈도우에서 Python Embeddable 사용하기 | 꿈돌이 | 2019.10.01 | 1667 |
14 | pywin32 설치/적용 | 꿈돌이 | 2018.02.21 | 3731 |
13 | Kivy 테마 -> Atlas 사용 | 꿈돌이 | 2018.02.03 | 4616 |
12 | Kivy 예제 | 꿈돌이 | 2018.02.03 | 3683 |
» | Kivy와 Flask를 Multiprocess로 돌리기 | 꿈돌이 | 2018.02.03 | 4716 |
10 | 파이썬 시스템 시간 설정 | 꿈돌이 | 2018.01.31 | 4020 |
9 | Kivy ScreenManager 화면 전환시 진입 및 종료 | 꿈돌이 | 2018.01.31 | 864 |
8 | Kivy kvlang에서 Label 정렬 | 꿈돌이 | 2018.01.31 | 6018 |
7 |
파이썬 Kivy로 그래프 그리기 간단 예제
![]() | 꿈돌이 | 2018.01.29 | 2560 |
6 | 윈도우 파이썬(< 버전 3.6)으로 print 출력시 raw write 오류 | 꿈돌이 | 2018.01.24 | 1398 |
5 | 파이썬으로 시리얼통신을 위한 가변데이터 만들기 | 꿈돌이 | 2018.01.17 | 3233 |
4 |
파이썬 Tk와 pyserial로 시리얼포트 송수신
![]() | 꿈돌이 | 2017.06.09 | 26616 |
3 |
파이썬 Kivy와 pyserial로 시리얼포트 송수신
![]() | 꿈돌이 | 2017.06.09 | 2783 |
2 | 라즈베리파이와 kivy로 작업을 처음 시작할 때 참고 | 꿈돌이 | 2017.06.08 | 1477 |
1 |
파이썬 폴더 변경시 윈도우 환경변수
![]() | 꿈돌이 | 2017.03.23 | 42228 |