2011-09-30 132 views
3

我正在python中運行一個腳本,需要很長時間來處理。問題是如果函數需要很長時間才能運行,我猜nginx在他的配置中有一個超時,並且防止了一些錯誤,並且阻止了函數完全運行。nginx + uwsgi 502壞網關python

我只想知道我是否可以增加超時值。因爲我已經在nginx的文件conf中嘗試了一些命令,例如:

uwsgi_connect_timeout 75; 
uwsgi_send_timeout 75; 
uwsgi_read_timeout 75; 
keepalive_timeout 650; 

但是沒有一個能夠工作。

THKS提前

+2

您的腳本需要多長時間才能運行? '75'並不比默認的'60'多很多。根據[文檔](http://wiki.nginx.org/HttpUwsgiModule#uwsgi_read_timeout),「uwsgi_read_timeout」是您想要更改的那個。 –

+0

也對你的腳本做什麼感到好奇。您可能會增加nginx的超時時間,但大多數用戶不會徘徊那麼長時間。 –

+0

基本上是一個腳本,它運行一個包含500個用戶的數據庫,並使用該腳本使用地理編碼爲我提供用戶地址的經度和緯度。用thar我插入一個mongodb集合。 ting是因爲geocode有時會失敗,我必須做3次這個程序才能知道所有用戶的地址。 –

回答

1

只延長了超時的問題是,不管多少時間,你將它設置爲你會遇到限制沿線某處。無論是與網絡服務器,瀏覽器或您的地理編碼調用。如果它在請求中經常失敗n次,那麼你無法真正做出任何保證。

因此,爲什麼不使用諸如celery之類的東西來運行這些地理編碼任務,並且在客戶端提交您的請求,而不是讓客戶端請求掛在長時間運行的進程上(並且由於擴展冒着服務器超時的風險)通過javascript的客戶端請求,並通過ajax輪詢服務器的答案,直到它得到迴應?

+0

我有一個非常好的理由要求更長的超時時間。這是客戶端需要在預生產服務器上執行的一次性導入任務,並且重寫代碼以作爲後臺任務的工作需要比僅暫時增加超時更長的時間。 –

0

我嘗試了一切寫在上面的迴應以及其他地方,但他們沒有工作。

我的解決方案正在改變我在uwsgi.conf和nginx.conf文件中的套接字。