Попробовав textract (который, казалось, слишком много зависимостей) и pypdf2 (который не смог извлечь текст из pdf-файлов, которые я тестировал) и tika (который был слишком медленным), я закончил использование pdftotext
из xpdf (как уже предлагаемый в другом ответе) и просто вызвал двоичный код из python напрямую (вам может понадобиться адаптировать путь к pdftotext):
import os, subprocess
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
args = ["/usr/local/bin/pdftotext",
'-enc',
'UTF-8',
"{}/my-pdf.pdf".format(SCRIPT_DIR),
'-']
res = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output = res.stdout.decode('utf-8')
Существует pdftotext , который в основном делает то же самое но это предполагает pdftotext в / usr / local / bin, тогда как я использую это в AWS лямбда и хочу использовать его из текущего каталога.
Btw: для использования этого на лямбда вам нужно поставить двоичный и зависимость от libstdc++.so
в вашей лямбда-функции. Мне лично нужно было компилировать xpdf. Поскольку инструкции для этого взорвут этот ответ, я поместил их в свой личный блог .
IISReset останавливает и перезапускает весь веб-сервер (включая приложения non-ASP.NET)
, Переработка пула приложений будет только влиять на приложения, работающие в том пуле приложений.
Редактирование web.config в веб-приложении только влияет на то веб-приложение (перерабатывает просто то приложение).
Редактирование machine.config на машине переработает все выполнение пулов приложений.
IIS будет контролировать / каталог bin Вашего приложения. Каждый раз, когда изменение обнаруживается в тех dlls, оно переработает приложение и перезагрузит те новые dlls. Это также контролирует web.config & machine.config таким же образом и выполняет то же действие для применимых приложений.
IISReset перезапускает весь веб-сервер (включая все связанные сайты). Если Вы просто надеетесь сбрасывать единственный веб-сайт ASP.NET, необходимо просто переработать тот AppDomain.
наиболее распространенный способ сбросить веб-сайт ASP.NET состоит в том, чтобы отредактировать web.config файл, но можно также создать администраторскую страницу со следующим:
public partial class Recycle : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
HttpRuntime.UnloadAppDomain();
}
}
Вот сообщение в блоге, которое я записал с большим количеством информации: Избегают IISRESET в Приложениях ASP.NET
Это воздействует на целое дерево процесса IIS, в противоположность просто Вашим пулам приложений.
C:\>iisreset /?
IISRESET.EXE (c) Microsoft Corp. 1998-1999
Usage:
iisreset [computername]
/RESTART Stop and then restart all Internet services.
/START Start all Internet services.
/STOP Stop all Internet services.
/REBOOT Reboot the computer.
/REBOOTONERROR Reboot the computer if an error occurs when starting,
stopping, or restarting Internet services.
/NOFORCE Do not forcefully terminate Internet services if
attempting to stop them gracefully fails.
/TIMEOUT:val Specify the timeout value ( in seconds ) to wait for
a successful stop of Internet services. On expiration
of this timeout the computer can be rebooted if
the /REBOOTONERROR parameter is specified.
The default value is 20s for restart, 60s for stop,
and 0s for reboot.
/STATUS Display the status of all Internet services.
/ENABLE Enable restarting of Internet Services
on the local system.
/DISABLE Disable restarting of Internet Services
on the local system.
Переработка Пула приложений перезапускает процесс w3wp.exe для того пула приложений , следовательно это будет только влиять на веб-сайты, работающие в том пуле приложений.
IISReset перезапускает ВСЕ процессы w3wp.exe и любое другое связанное с IIS обслуживание, т.е. Сервис FTP или NNTP.
я думаю, изменяясь web.config
, или /bin
не перерабатывает целый пул приложений, но я не уверен в этом.
Это останавливает и запускает сервисы, из которых состоит IIS.
можно думать о нем как о закрытии соответствующей программы и запуске его снова.
Здесь что является technet, должны сказать [приблизительно 110] iisreset
, Вы, возможно, должны были бы перезапустить Internet Information Services (IIS), прежде чем определенные изменения конфигурации вступят в силу или когда приложения становятся недоступными. Перезапуск IIS совпадает со сначала останавливающимся IIS, и затем запуск его снова, кроме него выполняется с единственной командой.
Можно найти больше информации, о котором сервисах это влияет на документах .
MicrosoftПри изменении конфигурационного файла веб-сайта ASP.NET он перезапускает приложение для отражения изменений...
, Когда Вы делаете Сброс IIS, который перезапускает все приложения, работающие на том экземпляре IIS.
Редактирование web.config
файл или обновление DLL в bin
папка просто перерабатывает рабочий процесс для того приложения, не целый пул.
IISReset перезапускает весь веб-сервер (включая все связанные сайты). Если вы просто хотите сбросить единственный веб-сайт ASP.NET, вам следует просто перезапустить этот домен приложения.