SW 개발

[python] 텔레그램 봇 409 error 관련 해

. . . 2017. 12. 15. 18:21
반응형
  • 마크다운변환 : 20191001

python 텔레그램 봇을 만들다 에러발생하여 정리한다.

telepot 에서 409 에러날때

텔래그램봇을 만지작만지작 놀다보면 다음과 같은 409 에러가 날때가 있다.

처음 시작할때는 않나오다가 몇번 텔래그램봇을 재시작하다보면 꼭 발생;;

로그는 다음과 같이 나타난다.

  File "/usr/local/lib/python3.5/dist-packages/telepot/loop.py", line 60, in run_forever
    allowed_updates=allowed_updates)
  File "/usr/local/lib/python3.5/dist-packages/telepot/__init__.py", line 993, in getUpdates
    return self._api_request('getUpdates', _rectify(p))
  File "/usr/local/lib/python3.5/dist-packages/telepot/__init__.py", line 491, in _api_request
    return api.request((self._token, method, params, files), **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/telepot/api.py", line 155, in request
    return _parse(r)
  File "/usr/local/lib/python3.5/dist-packages/telepot/api.py", line 150, in _parse
    raise exception.TelegramError(description, error_code, data)
telepot.exception.TelegramError: ('Conflict: terminated by other long poll or webhook', 409, {'error_code': 409, 'ok': False, 'description': 'Conflict: terminated by other long poll or webhook'})
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/telepot/loop.py", line 60, in run_forever
    allowed_updates=allowed_updates)
  File "/usr/local/lib/python3.5/dist-packages/telepot/__init__.py", line 993, in getUpdates
    return self._api_request('getUpdates', _rectify(p))
  File "/usr/local/lib/python3.5/dist-packages/telepot/__init__.py", line 491, in _api_request
    return api.request((self._token, method, params, files), **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/telepot/api.py", line 155, in request
    return _parse(r)
  File "/usr/local/lib/python3.5/dist-packages/telepot/api.py", line 150, in _parse
    raise exception.TelegramError(description, error_code, data)
telepot.exception.TelegramError: ('Conflict: terminated by other long poll or webhook', 409, {'error_code': 409, 'ok': False, 'description': 'Conflict: terminated by other long poll or webhook'})

원인

원인은 텔레그램 인스턴스가 제대로 정리되지 않아서이다. 즉, 내가 인지하지 못한 백그라운드에서 텔래그램이 계속돌고있다는 뜻.

  • 윈도우즈 아나콘다에서 개발하다보면.. 프로그램을 abort 시켜 강제로 멈추더라도 message loop 등록한 부분에서 계속적으로 동작할때가 있었다. 만약 윈도우즈 아나콘다에서 개발하다가 저런 이슈가 발생하면 아나콘다의 파이썬 커널을 그냥 재동작시키는것도 좋은방법
  • 리눅스의 경우 ctrl+c 누르면 바로 빠져나오면서 모두 인스턴스가 정리되었는데, 윈도우즈 아나콘다에서는 그렇지 않은듯 싶다.

해결

  • 윈도우즈 환경일경우... 파이썬커널(아나콘다커널) 을 재시작시키던지 강제로 인스턴스 찾아서 죽일것
  • 리눅스의 경우 백그라운드 프로세스중에 텔레그램쓰고있는 녀석이 있을것이니 찾아수 죽일것

끗.

반응형