我需要在Pyramid中进行回调,该回调将在发送响应并关闭客户端连接后执行。
我知道finished callbacks。然而,这不是我想要的。在连接关闭之前评估完成的回调(据我所知)。
任何线索?我需要发送电子邮件而不会产生一些延迟。通常情况下,我应该使用像芹菜这样的东西。但是我无法承担Heroku的后台工作人员。
答案 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读取数据并发送电子邮件。然后你的视图代码只是将数据放入队列并愉快地返回,而工作线程发送电子邮件。