Мне нужно закодировать видео с помощью ffmpeg в службе Service Fabric, когда я получаю новое сообщение из очереди служебной шины. Я могу извлечь файл ffmpeg.exe из ресурсов и запустить его, но могу ли я сохранить входные/выходные видеофайлы во внутренней файловой системе?Доступ к файловой системе в Service Fabric
5
A
ответ
5
Я испытал его на локальном кластере с помощью следующего кода:
protected override async Task RunAsync(CancellationToken cancellationToken)
{
while (true)
{
cancellationToken.ThrowIfCancellationRequested();
string filename = "testFile.txt";
File.AppendAllText(filename, "test. ");
string content = File.ReadAllText(filename);
System.Diagnostics.Trace.WriteLine("Content:" + content);
System.Diagnostics.Trace.WriteLine(new FileInfo(filename).FullName);
await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken);
}
}
Выходной результат был:
Content:test.
C:\SfDevCluster\Data\_App\_Node_3\SampleAppType_App51\work\testFile.txt
Content:test. test.
C:\SfDevCluster\Data\_App\_Node_3\SampleAppType_App51\work\testFile.txt
Content:test. test. test.
C:\SfDevCluster\Data\_App\_Node_3\SampleAppType_App51\work\testFile.txt
Но путь был изменен при следующем запуске в C: \ SfDevCluster \ Data_App_Node_3 \ SampleAppType_App52 \ работа \ testfile.txt.
Поэтому я полагаю, что ответ:
Можно использовать локальную файловую систему, но только для временных файлов. И я думаю, что это хорошая практика для очистки системы в конце итерации.
Ваш вывод верен. Временное локальное хранилище файлов находится в той мере, в какой вы хотите использовать локальную файловую систему, поскольку службы не привязаны к какому-либо конкретному экземпляру виртуальной машины. –