2017-10-11 29 views
0

我能然而,当我运行代码即可获得包含在Python查询电子邮件列表从一个线程中我得到的错误:ssl.SSLError:SSL:WRONG_VERSION_NUMBER] Gmail的螺纹时

ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] 

这里就是我我打电话线程:

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

在这条线上出现的错误:

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

然而,当我る它没有线程(作为一个简单的方法调用)它工作正常。

因为在启动线程和发生错误之间有相当多的方法调用,所以很难共享代码。

任何帮助,将不胜感激。

回答

1

我刚刚发现这篇文章:https://developers.google.com/api-client-library/python/guide/thread_safety

根据文档,Gmail API建立在不是线程安全的Httplib2之上。

作为解决方案,您可以为每个命令的execute方法提供一个http对象的新实例。

在我的情况

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

变为:

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