uWSGI retseptid: dokumentide konverteerimine LibreOffice'i abil

Dokumentide konverteerimise ettevalmistamiseks on meil vaja LibreOffice, uwsgi-python, pylokit ja webob. Võib kasutada ka valmis. Kuid see on ainult uWSGI-serveri käivitamiseks, uWSGI-serveriga ühenduse loomiseks kasutame nginx.

Lihtsaim uWSGI-rakendus Pythonis koosneb rakendusfunktsioonist, millel on kaks argumenti: environ ja start_response

import os       # impordime
import pylokit  # vajalikud
import tempfile # meil
import webob    # moodulid

office = pylokit.Office('\/usr\/lib\/libreoffice\/program') # laadime LibreOffice'i teegi eelnevalt määratud teelt

def application(environ, start_response): # funktsioon uWSGI jaoks
    request = webob.Request(environ) # saame päringu keskkonnast
    file = request.POST['file'] # konverteeritav fail edastatakse multipart\/form-data nimega file
    filename, extension = os.path.splitext(file.filename) # saame faili nime ja laiendi
    with tempfile.NamedTemporaryFile(suffix=extension) as inp, tempfile.NamedTemporaryFile(suffix='.%s' % request.path.split('\/')[-1]) as out: # loome ühe ajutise faili koos edastatud faili laiendiga ja teise ajutise faili laiendiga, mis on päringu lõpust (ühilduv unoconv-api-ga)
        inp.write(file.file.read()) # kirjutame edastatud faili sisu esimesse ajutisse faili
        inp.flush() # (kuna LibreOfficeKit töötab liiga tihti ainult failidega)
        with office.documentLoad(inp.name) as doc: # laadime edastatud faili 
            doc.saveAs(out.name) # ekspordime laaditud faili teise ajutisse faili (vorming võetakse laiendist)
            with open(out.name, 'rb') as out2: # avame teise ajutise faili
                response = webob.Response(body=out2.read()) # loome tulemuse teise ajutise faili lugemise põhjal
                return response(environ, start_response) # ja tagastame selle

Võib lisada ka erinevate vigade töötlemise.

Testfaili, mille formaadiks on odt, konverteerimine pdf-iks toimub umbes 1,5 korda kiiremini võrreldes unoconv-api.

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster