För att förbereda dokumentkonverteringen behöver vi , , och . Vi kan Àven anvÀnda . Men detta Àr endast för att starta uWSGI-servern, och för att ansluta till uWSGI-servern kommer vi att anvÀnda .
Det enklaste uWSGI-programmet i Python bestÄr av en applikationsfunktion med tvÄ argument, environ och start_response
import os # importera
import pylokit # nödvÀndiga
import tempfile # vi behöver
import webob # moduler
office = pylokit.Office('\/usr\/lib\/libreoffice\/program') # laddar LibreOffice-biblioteket frÄn angiven sökvÀg
def application(environ, start_response): # funktion för uWSGI
request = webob.Request(environ) # fÄr begÀran frÄn omgivningen
file = request.POST['file'] # filen för konvertering skickas via multipart\/form-data med namnet file
filename, extension = os.path.splitext(file.filename) # fÄr namn och tillÀgg
with tempfile.NamedTemporaryFile(suffix=extension) as inp, tempfile.NamedTemporaryFile(suffix='.%s' % request.path.split('\/')[-1]) as out: # skapar en temporÀr fil med tillÀgg frÄn den angivna filen och en annan temporÀr fil med tillÀgg frÄn slutet av begÀran (för kompatibilitet med unoconv-api)
inp.write(file.file.read()) # skriver innehÄllet frÄn den angivna filen till den första temporÀra filen
inp.flush() # (eftersom LibreOfficeKit av nÄgon anledning bara fungerar med filer)
with office.documentLoad(inp.name) as doc: # laddar den angivna filen
doc.saveAs(out.name) # exporterar den laddade filen till en annan temporÀr fil (formatet tas frÄn tillÀgget)
with open(out.name, 'rb') as out2: # öppnar den andra temporÀra filen
response = webob.Response(body=out2.read()) # skapar resultatet frÄn lÀsningen av den andra temporÀra filen
return response(environ, start_response) # och returnerar den
Man kan naturligtvis ocksÄ lÀgga till felhantering.
Konvertering av en test-odt-fil pÄ en sida till pdf gÄr ungefÀr 1,5 gÄnger snabbare jÀmfört med .
KĂ€lla: habr.com
