发送响应并关闭连接后的金字塔回调

时间:2013-01-11 01:56:47

标签: python heroku callback wsgi pyramid

我需要在Pyramid中进行回调,该回调将在发送响应并关闭客户端连接后执行。

我知道finished callbacks。然而,这不是我想要的。在连接关闭之前评估完成的回调(据我所知)。

任何线索?我需要发送电子邮件而不会产生一些延迟。通常情况下,我应该使用像芹菜这样的东西。但是我无法承担Heroku的后台工作人员。

1 个答案:

答案 0 :(得分:2)

我的理解是WSGI应用程序基本上是一个Python函数,它接收一组参数,返回一个代表HTTP respose的文本blob。该blob可以传递给WSGI管道中的某些过滤器,这些过滤器也只是函数,之后Web服务器将响应发送到客户端并关闭连接。来自Wikipedia article

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    yield 'Hello World\n'

由于Pyramid是一个WSGI应用程序,您可以看到连接关闭之类的事情可能会在其影响范围之外发生。

在您的情况下,如果您不想使用现有解决方案(排队模式下的pyramid_mailer,正如Chris McDonough所建议的那样),我会看一些像背景{{3每隔几秒从thread读取数据并发送电子邮件。然后你的视图代码只是将数据放入队列并愉快地返回,而工作线程发送电子邮件。