在python paste中启动我自己的线程

在python paste中启动我自己的线程,python,pylons,paste,Python,Pylons,Paste,我正在使用挂架和粘贴编写一个web应用程序。在HTTP请求完成后,我有一些工作要做,比如发送一些电子邮件,向db写一些东西,等等,我不想阻止HTTP请求 如果我启动一个线程来做这项工作,可以吗?我总是看到关于粘贴杀死挂起的线程的东西,等等。它会杀死我正在工作的线程吗 我还能在这里做什么?有没有一种方法可以让请求返回,但在完成后运行一些代码 谢谢。您可以使用线程方法,也许设置属性会有所帮助,但我不确定 然而,我建议研究一个任务队列系统。您可以将任务放置在非常快的队列上,然后侦听器可以异步处理任务,

我正在使用挂架和粘贴编写一个web应用程序。在HTTP请求完成后,我有一些工作要做,比如发送一些电子邮件,向db写一些东西,等等,我不想阻止HTTP请求

如果我启动一个线程来做这项工作,可以吗?我总是看到关于粘贴杀死挂起的线程的东西,等等。它会杀死我正在工作的线程吗

我还能在这里做什么?有没有一种方法可以让请求返回,但在完成后运行一些代码


谢谢。

您可以使用线程方法,也许设置属性会有所帮助,但我不确定

然而,我建议研究一个任务队列系统。您可以将任务放置在非常快的队列上,然后侦听器可以异步处理任务,从而允许HTTP请求快速返回。我知道Django有两个任务队列:

您还可以考虑使用更多的企业消息解决方案,如OR./P>


编辑:有一些很好的建议。

我认为最好的解决方案是消息传递系统,因为它可以配置为在挂架进程停止时不会丢失任务。我总是在线程上使用进程,尤其是在这种情况下。如果您使用的是Python2.6+,请使用内置的或始终可以安装处理模块,您可以在pypi上找到该模块,我无法发布链接,因为我是新用户

看看gearman,它是专门为“工人”处理农活而设计的。他们甚至可以用完全不同的语言来处理它。您可以回来询问任务是否已完成,或者让它完成。对于许多任务来说,这应该很有效


如果您确实需要确保任务完成,我建议您将任务排队到数据库或持久性的地方,然后在其中运行一个单独的进程,确保每个任务都得到适当的处理。

要直接回答您的基本问题,您应该能够按照自己的意愿使用线程。杀死挂起的线程部分是粘贴清理自己的线程,而不是您的线程

还有其他一些软件包可能会有所帮助,等等,但我建议你从简单的线程开始,看看你能走多远。只有到那时你才会知道你下一步需要什么


注意,这里的Thread.daemon应该与您无关。设置为true将确保启动的线程不会阻止整个进程退出。然而,这样做意味着,如果进程干净地退出,而不是被迫退出,那么线程将被终止,即使它没有完成它的工作。这是否是一个问题,以及您如何处理这类问题,完全取决于您自己的需求和设计。

您在哪里看到“粘贴消除挂起线程”?18:59:29042信息[paste.httpserver.ThreadPool]消除挂起线程状态:10个线程0工作,10个空闲,0个启动平均时间N/a,最大时间0.00秒,芹菜不再只适合Django,有些人已经将其用于塔架。