-
카테고리
-
세부 분야
금융 · 재테크
-
해결 여부
미해결
robobits_adv2.py 파일에서 TypeError: 'NoneType' object is not subscriptable 오류 발생하면서 멈췄어요.
22.04.07 12:39 작성 조회수 683
0
베이지안 최적화로 파라미터를 찾은다음 robobits_adv2.py를 구동 해봤습니다.
잘 되나 싶더니 10시간 정도 돌아가면서 매수 매도를 진행하다가 갑자기 봇이 멈추더라구요.
로그파일을 보니 아래와 같은 에러 메시지가 나옵니다.
이것만 해결하면 봇이 안 멈추고 24시간 동안 돌아갈 것 같은데...
이런 경우 어떻게 해결 할 수 있을까요?
답변을 작성해보세요.
1
멀티코어
지식공유자2022.04.07
현재 최신소스를 사용하고 계시네요.
제가 프로그래밍할 때 발생하지 않았던 오류가 yoon님 운영환경에서 발생하는 것 같습니다.
처리 프로세스는 다음과 같습니다.
1. 매수처리하고 결과 받기 result = up.buy_limit_order(coin_name, price, amt)
2. result 변수에 저장된 메시지에서 오류가 발생하지 않으면(result['error']['message']가 정상적으로 처리되지 않는 경우)
3. result 변수에서 uuid를 찾아서(uuid = result['uuid']) 반환
yoon님 운영환경에서는 오류 메시지가 없음에도 불구하고 반환값에 uuid가 없는 경우(정상적으로 매수가 되지 않는)인 것 같습니다.
오류를 방지하기 위해 다음과 같이 처리해야할 것 같습니다.
try: #error message check
message = result['error']['message']
except: #no error message -> normal state
if message == '':
message = 'good'
try:
uuid = result['uuid']
except:
message = 'unknown error'
uuid = ''
감사합니다.
yoon
질문자2022.04.07
멀티코어님,
왜 오류가 발생하는지 설명도 해주시고 해결도 해주셔서 정말 감사드립니다.
알려주신대로 코드 수정 했습니다.
ubuntu20.04 환경에 python3.7.7 버전 사용중인데, 일단 코드 수정 해 놓은 상태에서 왠만하면 이 운영환경을 유지해야 할 것 같아요.
정말 감사드립니다!
추가 강의 제작을 하신다고 들었는데, 강의 나오면 추가 결제 바로 하겠습니다^^
0
yoon
질문자2022.04.07
아래와 같습니다.
#지정가 매수
def buy_limit_order(up, coin_name, price, amt):
message = ''
uuid = 'none'
result = {'uuid': ''}
try:
result = up.buy_limit_order(coin_name, price, amt)
except:
message = "{}".format(sys.exc_info())
try: #error message check
message = result['error']['message']
except: #no error message -> normal state
if message == '':
message = 'good'
uuid = result['uuid']
return message, uuid
답변 2