Voor het omzetten van documenten hebben we nodig , , en . We kunnen ook gebruikmaken van . Maar dit is alleen voor het starten van de uWSGI-server, en voor de verbinding met de uWSGI-server gebruiken we .
De eenvoudigste uWSGI-applicatie in python bestaat uit de functie application met twee argumenten environ en start_response
import os # importeren
import pylokit # benodigde
import tempfile # tijdelijke bestanden
import webob # modules
office = pylokit.Office(' /usr/lib/libreoffice/program') # laad de LibreOffice bibliotheek op de opgegeven locatie
def application(environ, start_response): # functie voor uWSGI
request = webob.Request(environ) # ontvang verzoek uit de omgeving
file = request.POST['file'] # bestand voor conversie wordt doorgegeven via multipart/form-data met de naam file
filename, extension = os.path.splitext(file.filename) # verkregen naam en extensie
with tempfile.NamedTemporaryFile(suffix=extension) as inp, tempfile.NamedTemporaryFile(suffix='.%s' % request.path.split('/')[-1]) as out: # maak een tijdelijk bestand met de extensie van het doorgegeven bestand en een ander tijdelijk bestand met de extensie van de aanvraag (voor compatibiliteit met unoconv-api)
inp.write(file.file.read()) # schrijf de inhoud van het doorgegeven bestand naar het eerste tijdelijke bestand
inp.flush() # (omdat LibreOfficeKit om de een of andere reden alleen met bestanden werkt)
with office.documentLoad(inp.name) as doc: # laad het doorgegeven bestand
doc.saveAs(out.name) # exporteer het geladen bestand naar een ander tijdelijk bestand (formaat wordt genomen van extensie)
with open(out.name, 'rb') as out2: # open het andere tijdelijke bestand
response = webob.Response(body=out2.read()) # maak het resultaat aan uit het voorlezen van het andere tijdelijke bestand
return response(environ, start_response) # en geef het terug
Je kunt natuurlijk ook foutafhandeling toevoegen.
De conversie van een test eendimensionaal odt-bestand naar pdf gebeurt ongeveer 1,5 keer sneller in vergelijking met .
Bron: habr.com
