letsplayants / Ants-Auto-Trading-Bot

6 stars 6 forks source link

프로그램 오류시 누적 메일 처리 #14

Open letsplayants opened 5 years ago

letsplayants commented 5 years ago

프로그램을 재시작하지 않은 상태에서, 프로그램 오류가 발생될 때가 있는데요.

다시 메일 읽기를 시도할 때, '읽지않음' 상태인 누적 메일을 일괄 처리되는 리스크가 있습니다.

메일을 읽는 시간 이전의 누적 메일은 무시하는 루틴이 적용되어야 할 것 같습니다.

MuYoul commented 5 years ago

프로그램이 시작될 때를 기점으로 모든 읽지않은 메일을 '읽음'으로 바꾸는 루틴이 존재합니다.

이 때 발생할 수 있는 리스크를 말씀하시는 거라면 어떤 리스크를 말씀하시는 것인가요?

최초 실행시 구동시간이 좀 걸리는 리스크말고는 생각나는 것이 없긴한데 만약 이 시간이 너무 오래 걸린다면 말씀하신대로 imap서버에서 메일을 조회할 때 시간을 지정해서 조회를 해야할 것 같습니다.

사실 쿼리를 날릴때 조회 조건이 붙는 것은 별로 좋지 않은 것 같아서 가능한 모든 메일을 다 읽음으로 표시해버리는 방식으로 코드를 작성했습니다. 이전 이슈(#2)에서도 밝혔듯이 얼럿메일은 1회성으로 판단하고 삭제를 고려했었습니다. 다만 현재는 테스트 단계라 삭제보다는 보관 처리를 해둔 것입니다. 저의 권장은 메일함을 싹 비우고 시작하는 것을 권장합니다.

다른 의견이 있으시면 의견을 달아주세요 :)

letsplayants commented 5 years ago

프로그램 시작시에 메일함 초기화는 앞서 체크해주셨던 사항이라서 크게 문제가 없습니다. 어떤 이유에서인지, 프로그램 중간에 오류가 생기면서 이후에 메일을 아예 읽지 못하는 현상이 생기더군요.. 아. 중간에 cmd 창에 마우스가 찍히면서 프로그램이 멈추었는데, 이후에 엔터로 프로그램 진행되면서 메일 누적되던게 한꺼번에 처리되어 버렸습니다.

중간에도 시간 체크하는게 좋을 거 같습니다.

MuYoul commented 5 years ago

아.. 그 문제는 윈도우에서만 발생하는 터미널상의 문제인 것 같습니다.

윈도우에서 실행하면 터미널이 생성되죠? 거기서 커서를 눌러서 '선택'모드로 전환이되면 터미널에서 돌고 있는 프로세스가 멈추는 것 같습니다. 그리고 '선택'모드가 종료가 되면 멈춰있던 프로세스가 일괄 진행이되면서 위와 같은 문제가 발생하는 것 같습니다.

그래서 윈도우 터미널로 실행 시 창을 내려서 '선택'모드가 되지 않도록 하는 것이 필요할 것 같습니다.

이와 별개로 메일의 타임스탬프와 프로그램의 타임스탬프를 비교해서 일정 간격이 지난 메일은 전부 통과하도록 하는 루틴을 넣어서 안정장치를 걸도록 하겠습니다.

letsplayants commented 5 years ago

네 수익과 직결되는 부분이라서 안전장치가 있다면 신뢰가 더 들 것 같습니다. 윈도우 터미널에서의 선택모드 변경에서의 프로그램 멈춤 현상은 저도 이번이 처음인데 윈도우 사용자를 위해서 뭔가 안내가 필요할 거 같습니다. 안전장치와 별개로 프로그램 자체가 멈춰버려서 봇의 기능을 상실해 버리니깐요. 이 부분은 프로그램이 처리할 범주가 아닌 것같고, 따로 도큐먼트 작업을 하겠습니다.

MuYoul commented 5 years ago

https://stackoverflow.com/questions/33883530/why-is-my-command-prompt-freezing-on-windows-10

해당이슈 같네요. 설정으로 해결을 할 수 있기는 한데.. 일반 유저를 위해서는 다른 방법으로 접근해야할 것 같습니다.

가령 배포판에서는 화면에 로그를 출력하지 않는다던지..하는 방식으로요.

MuYoul commented 5 years ago

https://stackoverflow.com/questions/17584698/getting-rid-of-console-output-when-freezing-python-programs-using-pyinstaller 요런 방법으로도 피해갈 수 있을 것 같습니다 :)