random.org json-rpc api(1版)实现。
rdoclient的Python项目详细描述
random.org json-rpc api(1版)实现。
这是random.org json-rpc api(r1)的python实现。它通过randomorgclient类提供对api的有符号和无符号方法的序列化或非序列化访问。它还通过randomorgclient类randomorgcache提供了一个方便类,用于预处理请求。在该模块的上下文中,序列化客户端是请求序列与响应序列匹配的客户端。
用法
默认设置最适合于非时间关键的序列化请求,例如批处理客户端:
>>> fromrdoclientimportRandomOrgClient>>> r=RandomOrgClient(YOUR_API_KEY_HERE)>>> r.generate_integers(5,0,10)[6, 2, 8, 9, 2]
…或者对于时间敏感的序列化应用程序,例如实时绘制,请使用:
>>> r=RandomOrgClient(YOUR_API_KEY_HERE,blocking_timeout=2.0,http_timeout=10.0)>>> r.generate_signed_integers(5,0,10){'random': {u'min': 0, u'max': 10, u'completionTime': u'2014-05-19 14:26:14Z', u'serialNumber': 1482, u'n': 5, u'base': 10, u'hashedApiKey': u'HASHED_KEY_HERE', u'data': [10, 9, 0, 1, 5], u'method': u'generateSignedIntegers', u'replacement': True}, 'data': [10, 9, 0, 1, 5], 'signature': u'SIGNATURE_HERE'}
如果立即获得某种响应很重要,则应使用缓存。缓存将尽可能快速、高效地填充自身,允许立即提供预先获得的随机性。如果随机性不可用(例如,缓存为空),则缓存将返回一个空异常,允许无延迟地处理缺少随机性:
>>> r=RandomOrgClient(YOUR_API_KEY_HERE,blocking_timeout=60.0*60.0,http_timeout=30.0)>>> c=r.create_integer_cache(5,0,10)>>> try:... c.get()... exceptQueue.Empty:... # handle lack of true random number here... # possibly use a pseudo random number generator...[1, 4, 6, 9, 10]
请注意,缓存不支持签名响应,因为假设使用签名功能的客户端希望完全控制响应的序列号。
最后,可以在不序列化的情况下尽快请求实时结果,但这可能更容易导致超时失败,因为如果服务器过载,客户端必须遵守服务器的建议延迟时间:
>>> r=RandomOrgClient(YOUR_API_KEY_HERE,blocking_timeout=0.0,http_timeout=10.0,serialized=False)>>> r.generate_integers(5,0,10)[3, 5, 2, 4, 8]
文档
有关可用随机性生成函数和其他功能的完整列表,请参见rdoclient.py文档和https://api.random.org/json-rpc/1/
测试
请注意,要运行附带的测试,必须为api_键字段提供真实值。