Receta uWSGI: konvertimi i dokumenteve duke përdorur LibreOffice

Për të përgatitur konvertimin e dokumenteve, na nevojitet LibreOffice, uwsgi-python, pylokit dhe webob. Mund të përfitoni gjithashtu nga një mënyrë e gatshme. Por kjo është vetëm për të nisur serverin uWSGI, ndërsa 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  # të nevojshme
import tempfile # na duhen
import webob    # modul

office = pylokit.Office('\/usr\/lib\/libreoffice\/program') # ngarkojmë bibliotekën LibreOffice në rrugën përkatëse

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

Sigurisht, mund të shtojmë gjithashtu trajtimin e disa gabimeve.

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

Burimi: habr.com

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