2016-05-07 4 views
0

Я создаю документ PDF и временно сохраняю его в каталоге /tmp. После того, как документ сгенерирован и сохранен в каталоге (я делаю это как фоновый процесс с Sidekiq), я загружаю его в Amazon S3 и удаляю его из каталога /tmp.Rails 4 - как очищается «/ tmp»?

Что я заметил, так это то, что когда пользователь создает документ, и я развертываю на сервере новый код (с использованием Capistrano), процесс создания/загрузки документа прерывается.

Мне было интересно, может ли это быть связано с Sidekiq? Он работает как служба Upstart на Ubuntu, поэтому я так не думаю.

Тогда я думал, что проблема может заключаться в том, что я храню документ в каталоге /tmp. Как работает каталог? Является ли весь контент каталога удаленным, когда я делаю новое развертывание с Capistrano?

EDIT:

Генерация документов занимает обычно занимает 5-10 секунд, но очередь default, поэтому процесс может потерпеть неудачу, потому что слишком много default процессов в очереди?

+0

'/ tmp' каталог очищается после каждой перезагрузки. –

+0

'capistrano создает отдельную папку для каждого вновь развернутого кода – illusionist

+0

@illusionist ok, поэтому, когда я начинаю генерировать файл, он сохраняется в'/tmp', и в этот момент, когда я начну развертывать код, эта папка '/ tmp' станет недоступно для приложения, я прав? – user984621

ответ

0

Каталог /tmp должен быть очищен только во время загрузки сервера (поскольку @ Зелёный уже прокомментировал). Но ваше создание/загрузка PDF может занять слишком много времени, и процесс может быть убит. Это документально here и я процитирую документы:

sidekiqctl stop [pidfile] 60 

Это посылает TERM, ждет до 60 секунд, а затем убить -9 процесс Sidekiq, если она не вышла к тому времени. Имейте в виду, что тайм-аут тайм-аута - это время, в течение которого sidekiqctl будет ждать до запуска kill -9 в процессе Sidekiq.

Детали должны отображаться на выходе консоли во время развертывания capistrano, поэтому, если это не так, процесс будет убит, добавьте вывод к вопросу.

+0

Спасибо @BoraMa, так что я могу сказать о решении? Я думаю, что мне, вероятно, следует создать PDF-файл в качестве наивысшего приоритета, не так ли? Потому что сейчас все процессы Sikdeiq являются 'default'. Кроме того, следует ли выбрать другой каталог, в котором я бы сохранил временные файлы, прежде чем они будут загружены в AWS S3? Или, действительно, подходит ли каталог '/ tmp' для этой задачи? – user984621