2013-03-09 35 views
2

假設有新的評論,我需要發郵件給自己。
,我不想阻止向瀏覽器呈現HTML的web.py。
和線程似乎不工作在這裏。如何使用uwsgi web.py來運行後臺功能?

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字典。
它會添加一個參數,如http://domain.com:8080/?_t=3080772748這是醜陋的網址。
有沒有更好的解決方案? 像往常一樣發送電子郵件,同時提供網址請求。

回答

2

在uWSGI中使用線程沒有問題,但請記住使用--enable-threads啓用它們,否則GIL(出於性能原因)不啓用。

+0

謝謝!它是!我從來沒有想到,這是uWSGI會凍結線程沒有 - 啓用線程.. – C19 2013-03-09 08:41:04