在使用Openstack Swift客户端库时,我遇到了Python生成器的问题.
手头的问题是我试图从特定的URL(大约7MB)中检索大量数据,将字符串分成较小的位,然后发回一个生成器类,每次迭代都保存一个字符串的块.在测试套件中,这只是一个字符串,它被发送到swift客户端的monkeypatched类进行处理.
monkeypatched类中的代码如下所示:
def monkeypatch_class(name, bases, namespace):
'''Guido's monkeypatch metaclass.'''
assert len(bases) == 1, "Exactly one base class required"
base = bases[0]
for name, value in namespace.iteritems():
if name != "__metaclass__":
setattr(base, name, value)
return base
Run Code Online (Sandbox Code Playgroud)
在测试套件中:
from swiftclient import client
import StringIO
import utils
class Connection(client.Connection):
__metaclass__ = monkeypatch_class
def get_object(self, path, obj, resp_chunk_size=None, ...):
contents = None
headers = {}
# retrieve content from path and store it in 'contents'
...
if resp_chunk_size is not None:
# …Run Code Online (Sandbox Code Playgroud)