2017-10-11 17 views
0

のスレッドとき、私は私がエラーを取得するスレッド内からコードを実行したときしかしPythonでのクエリを含む電子メールのリストを取得することができる午前:ssl.SSLError:[SSL:WRONG_VERSION_NUMBER] Gmailの

ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] 

は、ここで私はスレッドを呼んでいる方法は次のとおりです。

response = service.users().labels().list(userId=user_id).execute() 

しかしI RU:エラーがこの行で発生し

Thread(target=get_messages_for_label, args=({'recruitment'})).start() 

nスレッドなしで(単純なメソッド呼び出しとして)うまく動作します。

スレッドが開始された場所とエラーが発生する場所の間にかなりの数のメソッド呼び出しがあるため、コードを共有するのは難しいです。

ご協力いただければ幸いです。

答えて

1

この記事が見つかりました:https://developers.google.com/api-client-library/python/guide/thread_safety

ドキュメントによると、Gmail APIはスレッドセーフではないHttplib2の上に構築されています。

回避策として、各コマンドの実行メソッドにhttpオブジェクトの新しいインスタンスを提供できます。私の場合は

service.labels().list().execute() 

は次のようになります。

service.users().labels().list(userId=user_id)\ 
    .execute(http=self.__get_credentials().authorize(httplib2.Http()))