Dokumentide töötlemiseks on meil vajalik , , ja . Samuti on võimalik kasutada . Kuid see on ainult uWSGI-serveri käivitamiseks, uWSGI-serveriga ühendamiseks kasutame .
Lihtsaim uWSGI-rakendus Pythonis koosneb application-funktsioonist, millel on kaks argumenti: environ ja start_response
import os # impordime
import pylokit # vajalikud
import tempfile # me
import webob # moodulid
office = pylokit.Office('/usr/lib/libreoffice/program') # laadime LibreOffice'i teeki antud teelt
def application(environ, start_response): # funktsioon uWSGI jaoks
request = webob.Request(environ) # saame päringu keskkonnast
file = request.POST['file'] # fail muundamiseks edastatakse multipart/form-data kaudu nimega file
filename, extension = os.path.splitext(file.filename) # saame nime ja laiendi
with tempfile.NamedTemporaryFile(suffix=extension) as inp, tempfile.NamedTemporaryFile(suffix='.%s' % request.path.split('/')[-1]) as out: # loomine ühte ajutisse faili antud faili laiendiga ja teise ajutise faili laiendiga, mis päringust (unoconv-api jaoks ühilduv)
inp.write(file.file.read()) # kirjutame edastatud faili sisu esimesse ajutisse faili
inp.flush() # (kuna LibreOfficeKit töötab kummalisel kombel ainult failidega)
with office.documentLoad(inp.name) as doc: # laadime antud faili
doc.saveAs(out.name) # ekspordime laaditud faili teise ajutisse faili (formaadi määrab laiend)
with open(out.name, 'rb') as out2: # avame teise ajutise faili
response = webob.Response(body=out2.read()) # loome tulemusest teise ajutise faili lugemise järgi
return response(environ, start_response) # ja tagastame selle
Muidugi saab veel lisada erinevate vigade käsitlemist.
Testfaili ühekordne odt-vormingust pdf-ks ümber teisendamine toimub ligikaudu 1,5 korda kiiremini võrreldes .
Allikas: habr.com
