我做了一个快速谷歌,但无法找到任何明确的陈述。基本上,我试图从SQS读取事件并处理它们,而asio预计将由greenlets处理。
那么boto3的粒度可以用于greenlet吗?我是否需要每个greenlet会话/客户端?我需要额外的互斥吗?
答案 0 :(得分:0)
Boto3没有,但你可以修补僵尸。
在模块的顶部,你总是需要先修补补丁,然后再使用botocore会话,例如:
from gevent import monkey
monkey.patch_all()
import botocore.session
def fetch_file(bucket, key):
session = botocore.session.get_session()
client = session.create_client('S3')
return client.get_object(
Bucket=bucket,
Key=key
)
result = gevent.spawn(fetch_file('mybucket', 'sd.txt'))
答案 1 :(得分:0)
gevent Monkey补丁程序会自动修补所有下面的套接字调用,只要botocore使用这些套接字调用即可。 boto3确实使用了botocore。