Recetat e uWSGI: transformimi i dokumenteve duke përdorur LibreOffice

Për të përgatitur transformimin e dokumenteve, do të na nevojiten LibreOffice, uwsgi-python, pylokit dhe webob. Mund të përdorni gjithashtu një mënyrë të gatshme. Por kjo është vetëm për të nisur serverin uWSGI, dhe për t'u lidhur me serverin uWSGI do të përdorim nginx.

Aplikacioni më i thjeshtë uWSGI në python përbëhet nga funksioni application me dy argumente environ dhe start_response

import os       # importojmë
import pylokit  # nevojitet
import tempfile # na nevojitet
import webob    # modulet

office = pylokit.Office('/usr/lib/libreoffice/program') # ngarkojmë bibliotekën LibreOffice në rrugën e dhënë

def application(environ, start_response): # funksioni për uWSGI
    request = webob.Request(environ) # marrim kërkesën nga ambienti
    file = request.POST['file'] # skedari për transformim dërgohet përmes multipart/form-data me emrin file
    filename, extension = os.path.splitext(file.filename) # marrim emrin dhe zgjerimin
    me tempfile.NamedTemporaryFile(suffix=extension) si inp, tempfile.NamedTemporaryFile(suffix='.%s' % request.path.split('/')[-1]) si out: # krijojmë një skedar të përkohshëm me zgjerimin e skedarit të dërguar dhe një tjetër skedar të përkohshëm me zgjerimin nga fundi i kërkesës (për kompatibilitet me unoconv-api)
        inp.write(file.file.read()) # shkruajmë përmbajtjen e skedarit të dërguar në skedarin e parë të përkohshëm
        inp.flush() # (sepse LibreOfficeKit ndonjëherë funksionon vetëm me skedarë)
        me office.documentLoad(inp.name) si doc: # ngarkojmë skedarin e dërguar 
            doc.saveAs(out.name) # eksportojmë skedarin e ngarkuar në një tjetër skedar të përkohshëm (formati merret nga zgjerimi)
            me open(out.name, 'rb') si out2: # hapim skedarin tjetër të përkohshëm
                response = webob.Response(body=out2.read()) # krijojmë rezultatin nga leximi i skedarit tjetër të përkohshëm
                return response(environ, start_response) # dhe e kthejmë atë

Natyrisht, mund të shtojmë përpunimin e disa gabimeve.

Transformimi i një skedari odt testues me një faqe në pdf bëhet rreth 1.5 herë më shpejt se unoconv-api.

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster