>

flask_socketio 및 eventlet이있는 python 용 눈송이 커넥터를 사용하여 눈송이에 대해 쿼리를 실행하려고하면 다음 오류가 발생합니다. 원숭이 패치 이벤트를 수행 할 때만 발생합니다. 이에 대한 도움을 주시면 감사하겠습니다.

import snowflake.connector as scon
from flask import Flask
from flask_socketio import SocketIO
import eventlet
eventlet.monkey_patch()
def query():
    # Gets the version
    ctx = scon.connect(
                       user='xxx',
                       password='xxxxxxxx',
                       account='xxxxxx',
                      )
    cs = ctx.cursor()
    try:
        cs.execute("SELECT current_version()")
        one = cs.fetchone()
        return 'Snowflake version={}'.format(one[0])
    finally:
        cs.close()
app = Flask(__name__)
socketio = SocketIO(app)

@app.route('/')
def query_route():
    return query()
socketio.run(app,debug=False, host='localhost', port=5000)

받은 오류 :

Traceback (most recent call last):
  File "/home/chad/miniconda2/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/home/chad/miniconda2/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/chad/miniconda2/lib/python2.7/multiprocessing/pool.py", line 327, in _handle_workers
    while thread._state == RUN or (pool._cache and thread._state != TERMINATE):
AttributeError: '_MainThread' object has no attribute '_state'
Exception in thread Thread-6:
Traceback (most recent call last):
  File "/home/chad/miniconda2/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/home/chad/miniconda2/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/chad/miniconda2/lib/python2.7/multiprocessing/pool.py", line 363, in _handle_tasks
    cache[job]._set(ind + 1, (False, ex))
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'


  • 답변 # 1

    멀티 프로세싱 패키지는 Eventlet과 호환되지 않습니다. Evenlet 관리자의 의견입니다.

    이 기능을 Eventlet에 바인딩되지 않은 별도의 프로세스 (다른 마이크로 서비스)로 옮기는 것을 고려해야합니다.

관련 자료

  • 이전 C/C ++와 같은 Python에서 매크로 대체 사용
  • 다음 Angular 4 애플리케이션을 사용하여 Firebase 스토리지에서 모든 제품 이미지 (약 1000)를 캐시하는 방법은 무엇입니까?