【问题标题】:SQLAlchemy: writing to database after the response has been sentSQLAlchemy:发送响应后写入数据库
【发布时间】:2010-09-02 22:41:03
【问题描述】:

我有一个简单的服务,它大约执行以下操作:

  1. HTTP 客户端连接到服务器
  2. 服务器将客户端的sessionID和时间戳写入数据库,大多数情况下只是返回一个空响应

(它做实际工作并返回实际数据的情况与这个问题无关)

为了尽快返回此响应,我想将信息写入请求处理程序主体中的 memcache(因为 memcache 很快),并生成一个单独的线程,使用 SQLAlchemy 的另一个函数将写入它到持久存储。这样,我将能够在写入 memcache 并产生一个线程后立即返回,并且请求处理程序不必等到 SQLAlchemy 将信息保存到数据库。

这有意义吗?如果是,我应该如何实现?

【问题讨论】:

  • 您是否对这两种解决方案进行了基准测试(仅写入 memcache 与第二种解决方案相关)?我的猜测是,即使存在可测量的差异,它也会与一般的网络延迟差异相提并论。作为一般建议,请阅读本页的第一段:c2.com/cgi/wiki?PrematureOptimization
  • 会的。但是我仍然非常希望可以在另一个线程中启动后台作业(对于计算量将影响初始延迟的情况)并通常避免数据损坏/不一致或其他问题与较差的并行编程技能相关。

标签: python optimization memcached data-storage


【解决方案1】:

您可以使用Celery distributed task queue 之类的东西将处理任务转移到其他机器上。它确实需要设置一个单独的基础架构,但允许将任务从 Web 请求移交给后台处理,同时可以立即返回对请求的 HTTP 响应。

【讨论】:

  • 谢谢,看来这正是我所需要的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 2018-02-07
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
相关资源
最近更新 更多