我该如何使用uwsgi的web.py运行后台功能?(how can I use uwsgi web.

2019-08-17 10:22发布

说我需要发送电子邮件到自己,当有新的评论。
我不希望阻止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函数执行完毕..其中的发送者是freezed..usually发件人没有完成其工作。 我当然不希望使用sender.join()等待发送结束。

我觉得uwsgi没有任何与此..
但我看到了一个角度解释这一现象uwsgi暂停web.py app.when没有request.or请求完成。
web.py的提供所谓的方法@background .. http://webpy.org/cookbook/background
但它似乎有一定的problems.it不清空threaddb字典。
并且将一个参数添加到如URL http://domain.com:8080/?_t=3080772748这是丑陋的。
是否有更好的解决办法? 同时发送服务请求的url像往常一样的电子邮件。

Answer 1:

有在uWSGI使用线程没有问题,但请注意--enable-线程否则GIL(由于性能原因),使他们也未启用。



文章来源: how can I use uwsgi web.py to run background function?