發表文章

目前顯示的是有「python」標籤的文章

supervisor in Ubuntu

這邊只單純說明我用 supervisor 這個軟體做什麼。 這邊我要用Gunicorn當作server來跑一個Django的網站。 但如果只單純地用Guincorn放任他在背景天昏地暗的跑,可能哪天遇到個意外的話這個程序就中斷了。那 supervisor 這個軟體的其中一個功能就是可以讓我們的Gunicorn即便中斷也可以再讓他啟動。上面那個是我主要需要的功能,但他還有很多其他功能,其中值得一提的是他還能夠清楚地監控正在執行的程式。基本上 supervisor 的 官網 有很清楚的文件。這篇文章比較偏向是把自己做過的事紀錄一下。以下是概略的安裝,設定和使用方法。 安裝 這步驟算是最簡單的。有兩個很簡單的方法,其中一個是使用ubuntu的apt,另外一個則是使用python的pip。 用apt安裝 sudo apt-get install supervisor 用pip安裝 sudo pip install supervisor 設定 supervisor預設的設定檔的位置是在/etc/supervisor/supervisord.conf 或/etc/supervisord.conf 其中預設的設定檔中有include了 /etc/supervisor/conf.d 目錄下的所以設定檔。 所以我們可以將設定檔放到這個目錄下,並分別以不同的程序命名。 參考這篇" Setting up Django with Nginx, Gunicorn, virtualenv, supervisor and PostgreSQL "的文章,最後的兩個步驟其一是寫一個shell script跑gunicorn。 另外一個則是將supervisor的conf檔設定好,其中command的參數就是上面的那個script. 參數還包含了log檔案位置,設定程序執行的使用者等等。 使用 我們主要會用到的會是supervisorctl這個程式,可以方便我們監控程序的執行。 P.S. 在設定supervisor和gunicorn user時我安裝的主機遇到一個奇怪的問題。當我同時設定都設定使用者時supervisor會無法啟動這個程序。後來我不設定gunicorn上的使用者就能夠使用了。

crontab小知識

crontab -e 加一行 SHELL=/bin/bash 因為預設是/bin/sh 所以如果使用source 或者python 等指令會有問題。 加下去就可以下班了,耶! ps. python 在ubuntu的/bin/sh下用沒問題。

0.1+0.2不等於0.3!

在滿多程式語言裡面0.1+0.2答案不會是等於0.3。 馬上打開console試看看吧! 我是在某天做報表的時候發現的,看到的時候直接傻眼。 馬上google一下。我記得我關鍵字是python float add,然後就看到這頁 https://docs.python.org/2/tutorial/floatingpoint.html 看完之後只能說是學習了。 或者說,現在吃到以前種的苦果了吧,哈哈哈。 簡單說明這個現象的話,原因就是電腦是二進位,而我們所使用的是10進位。 從二進制轉換成十進制的時候有些數字就是沒辦法精確地表示出來。 就像是1/3我們如果用10進位表示的話, 0.3, 0.33, 0.333333都不準,只能說後者比前者更加準確。 所以在二進位表現十進位的時候也是相同道理的。 而這也是為什麼會出現這種現象的原因。 所以coding的時候這個現象要小心呀! 尤其是數值比較的判斷式更要注意,否則會產生非預期結果。 有興趣的人可以google: 0.1+0.2 喔! 相關內容: https://en.wikipedia.org/wiki/IEEE_754-1985 https://docs.python.org/2/tutorial/floatingpoint.html http://stackoverflow.com/questions/588004/is-floating-point-math-broken