我使用uwsgi部署django,在django程序中使用subprocess調(diào)用系統(tǒng)安裝的pdf2htmlEX。
當使用django自帶的manage.py runserver時,服務(wù)正常運行。
但使用uwsgi部署后,subprocess 的 returncode 為 -11,據(jù)查是段錯誤的意思。
但同樣的環(huán)境,同樣的參數(shù)與文件,runserver調(diào)用狀態(tài)正常,單獨跑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è)置每個工作進程的最大請求數(shù),超過該請求數(shù),該工作進程就會回收重啟
max-requests = 1000
#當某個工作進程占用內(nèi)存超過1000M時,該工作進程回收重啟
reload-on-as = 50000
reload-on-rss = 8500
#據(jù)說加上這個鎖比較安全
thunder-lock
# 設(shè)置在平滑的重啟(直到接收到的請求處理完才重啟)一個工作子進程中,等待這個工作結(jié)束的最長秒數(shù)。這個配置會使在平滑地重啟工作子進程中,如果工作進程結(jié)束時間超過了72000秒就會被強行結(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è)的國家
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務(wù)負責iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。