回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>在开发服务器上,我可以创建一个pdf文件,并使用pdfkit将其发送给最终用户</p>
<p>返回pdf的我的视图</p>
<pre><code>@changesBP.route('/pdf', methods=['GET'])
def pdfView():
if not 'dataDict' in session:
flash('Du skal uploade regneark for at kunne fortsætte på siden')
return redirect(url_for('indexBP.indexView'))
balanceChangelist = session['balanceGruppeChanges']
balanceGrupper = balanceData(data = session['dataDict'])
balanceListe = session['balanceListe']
resultatChangelist = session['resultatGruppeChanges']
resultatGrupper = resultatData(data = session['dataDict'])
resultatListe = session['resultatListe']
aendingsLister = []
for bc in balanceChangelist:
for c in bc['changes']:
if c['list'] not in aendingsLister:
aendingsLister.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(c['list'])
for rc in resultatChangelist:
for c in rc['changes']:
if c['list'] not in aendingsLister:
aendingsLister.append(c['list'])
options = {
'page-size': 'Letter',
'margin-top': '0.75in',
'margin-right': '0.75in',
'margin-bottom': '0.75in',
'margin-left': '0.75in',
'encoding': "UTF-8",
'no-outline': None,
'quiet': ''
}
html = render_template('pdfTemplate.html', balanceChangelist = balanceChangelist,
balanceGrupper = balanceGrupper,
balanceListe = balanceListe,
resultatChangelist = resultatChangelist,
resultatGrupper = resultatGrupper,
resultatListe = resultatListe,
aendingsLister = aendingsLister)
out_File = BytesIO()
out_File.write(pdfkit.from_string(html, False, options=options))
out_File.seek(0)
return send_file(out_File,
attachment_filename='out.pdf',
as_attachment=True,
mimetype="application/pdf")
</code></pre>
<p>当通过gunicorn和Nginx在<a href="https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-16-04" rel="nofollow noreferrer">this guide</a>提供应用程序时,我在访问pdf视图时遇到了一个错误的网关错误。</p>
<p>我可以在错误日志中提供一些帮助</p>
<blockquote>
<p>2017/12/13 10:04:39 [error] 28047#28047: *78 upstream prematurely
closed connection while reading response header from upstream, client:
10.2.20.180, server: 10.8.0.12, request: "GET /pdf HTTP/1.1", upstream: <a href="http://unix:/home/hepo/segesdupont/segesdupont.sock:/pdf" rel="nofollow noreferrer">http://unix:/home/hepo/segesdupont/segesdupont.sock:/pdf</a>",
host: "10.8.0.12", referrer: "<a href="http://10.8.0.12/changes" rel="nofollow noreferrer">http://10.8.0.12/changes</a>"</p>
</blockquote>
<p>有什么想法吗?</p>