我使用uwsgi部署django,在django程序中使用subprocess調(diào)用系統(tǒng)安裝的pdf2htmlEX。
當(dāng)使用django自帶的manage.py runserver時,服務(wù)正常運(yùn)行。
但使用uwsgi部署后,subprocess 的 returncode 為 -11,據(jù)查是段錯誤的意思。
但同樣的環(huán)境,同樣的參數(shù)與文件,runserver調(diào)用狀態(tài)正常,單獨(dú)跑python程序調(diào)用也正常,但使用uwsgi部署后調(diào)用就不正常,這是怎么回事?
(查了有說在uwsgi設(shè)置里加 close-on-exec,但加了也不好使。。。。)
代碼如下形式。
from subprocess import call
def pdf2html(pdfpath,outputpath,filename):
'''將pdf轉(zhuǎn)為html,字體文件與html文件同級'''
if not os.path.exists(outputpath + '/' + filename):
os.mkdir(outputpath + '/' + filename)
shellstr = ['pdf2htmlEX', '--dest-dir', outputpath + '/' + filename, '--embed-font', '0','--embed-image', '0','--embed-external-font', '0','--embed-css', '0', '--no-drm', '1', pdfpath + '/' + filename + '.pdf']
print(shellstr)
shellresult = call(shellstr,shell=False,close_fds=True)
return shellresult
def 接口(request):
#......
returncode = pdf2html(...) #用uwsgi部署后,同樣的參數(shù)在這就返回 -11 。
我的uwsgi配置:
# backend_uwsgi.ini file
[uwsgi]
# Django-related settings
# the base directory (full path)
chdir = /home/serverend/comengine
# Django's wsgi file
module = comengine.wsgi
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 8
threads = 4
post-buffering = 65536
buffer-size = 65536
# the socket (use the full path to be safe),將socket寫入sock文件,安全又便捷
socket = /home/serverend/comengine/comengine/comengine.sock
# ... with appropriate permissions - may be needed
chmod-socket = 666
# clear environment on exit
vacuum = true
uwsgi_read_timeout = 60000
uwsgi_send_timeout = 60000
#不記錄access log
disable-logging = true
#設(shè)置每個工作進(jìn)程的最大請求數(shù),超過該請求數(shù),該工作進(jìn)程就會回收重啟
max-requests = 1000
#當(dāng)某個工作進(jìn)程占用內(nèi)存超過1000M時,該工作進(jìn)程回收重啟
reload-on-as = 50000
reload-on-rss = 8500
#據(jù)說加上這個鎖比較安全
thunder-lock
# 設(shè)置在平滑的重啟(直到接收到的請求處理完才重啟)一個工作子進(jìn)程中,等待這個工作結(jié)束的最長秒數(shù)。這個配置會使在平滑地重啟工作子進(jìn)程中,如果工作進(jìn)程結(jié)束時間超過了72000秒就會被強(qiáng)行結(jié)束(忽略之前已經(jīng)接收到的請求而直接結(jié)束)
worker-reload-mercy = 72000
#ignore-sigpipe = true
#ignore-write-errors = true
#disable-write-exception = true
close-on-exec = true
touch-logreopen = /home/serverend/nginxsetting/log/.touchforlogrotate
daemonize = /home/serverend/nginxsetting/log/uwsgi.log
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。