【发布时间】:2013-02-24 20:47:50
【问题描述】:
假设有新评论时我需要给自己发送一封电子邮件。
而且我不想阻止 web.py 向浏览器呈现 HTML。
并且线程似乎在这里不起作用。
class comment:
def POST(self):
...
sender = Thread(target=_sendmail,args=('New Comment',msg))
sender.start()
referer = web.ctx.get('HTTP_REFERER', 'http://www.domain.com')
raise web.SeeOther(referer)
使用线程时的问题是,一旦 POST 函数完成......其中的发送者将被冻结......通常发送者没有完成它的工作。 而且我当然不想使用 sender.join() 来等待 sender 结束。
我认为 uwsgi 与此无关..
但是我看到一个解释表明uwsgi暂停了web.py应用程序。当没有请求时。或者请求完成。
web.py 提供了一种称为@background..http://webpy.org/cookbook/background
的方法
但它似乎有一些问题。它没有清理 threaddb 字典。
它会在 URL 中添加一个参数,例如 http://domain.com:8080/?_t=3080772748,这很丑。
有更好的解决方案吗? 像往常一样在提供 url 请求的同时发送电子邮件。
【问题讨论】:
标签: python multithreading web.py uwsgi