Pri*_*ign 5 ssl multithreading python-3.x gmail-api
我能够获取包含 Python 查询的电子邮件列表,但是当我从线程内运行代码时,出现错误:
ssl.SSLError: [SSL: WRONG_VERSION_NUMBER]
Run Code Online (Sandbox Code Playgroud)
这是我调用线程的方式:
Thread(target=get_messages_for_label, args=({'recruitment'})).start()
Run Code Online (Sandbox Code Playgroud)
错误发生在这一行:
response = service.users().labels().list(userId=user_id).execute()
Run Code Online (Sandbox Code Playgroud)
但是,当我在没有线程的情况下运行它(作为简单的方法调用)时,它工作得很好。
很难共享中间的代码,因为在线程启动和错误发生之间有相当多的方法调用。
任何帮助,将不胜感激。
我刚刚找到这篇文章:https ://developers.google.com/api-client-library/python/guide/thread_safety 。
根据文档,Gmail API 构建在 Httplib2 之上,而 Httplib2 不是线程安全的。
作为解决方法,您可以向每个命令执行方法提供 http 对象的新实例。
就我而言
service.labels().list().execute()
Run Code Online (Sandbox Code Playgroud)
变成:
service.users().labels().list(userId=user_id)\
.execute(http=self.__get_credentials().authorize(httplib2.Http()))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1946 次 |
| 最近记录: |