我正在开发一个 Web 后端/API 提供程序,它从 3rd 方 Web API 获取实时数据,将其放入 MySQL 数据库并通过 HTTP/JSON API 使其可用。
我正在为 API 提供烧瓶并使用 SQLAlchemy Core 处理数据库。
对于实时数据抓取部分,我有通过发送请求、将返回的 xml 解析为 Python dict 并返回它来包装 3rd 方 API 的函数。我们将调用这些 API 包装器。
然后我在其他方法中调用这些函数,这些方法获取相应的数据,根据需要进行任何处理(如时区转换等)并将其放入数据库中。我们将调用这些处理器。
我一直在阅读有关异步 I/O 和 eventlet 的具体内容,印象非常深刻。
我将把它合并到我的数据抓取代码中,但我首先有一些问题:
猴子修补所有东西对我来说安全吗?考虑到我有烧瓶、SQLAlchemy 和一堆其他库,猴子修补有什么缺点(假设没有后期绑定)?
我应该将任务划分为什么粒度?我正在考虑创建一个定期生成处理器的池。然后,一旦处理器到达它调用 API 包装器的部分,API 包装器将启动一个 GreenPile 以使用 eventlet.green.urllib2 获取实际的 HTTP 数据。这是一个好方法吗?
- 超时 - 我想确保没有绿线挂起。将每个 greenthread 的 eventlet.Timeout 设置为 10-15 秒是一个好方法吗?
仅供参考,我有大约 10 组不同的实时数据,并且每 5-10 秒产生一个处理器。
谢谢!