当有新评论时,我需要发送电子邮件给自己 我不想阻止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()来等待发送者结束。
我认为uwsgi与此没有任何关系。
但我看到一个解释表明uwsgi暂停了web.py app.When没有请求。或者请求已经完成。
web.py提供了一种名为@background的方法.. http://webpy.org/cookbook/background
但它似乎有一些问题。它不会清理threaddb字典
它会为像http://domain.com:8080/?_t=3080772748这样丑陋的网址添加一个参数
有更好的解决方案吗? 照常向发送网址请求发送电子邮件。
答案 0 :(得分:2)
在uWSGI中使用线程没有问题,但是请记住使用--enable-threads启用它们,否则GIL(出于性能原因)启用它。