Я поставлен перед задачей: сделать некое веб-приложение на небольшой коллектив (в пределах десяти человек), результатом работы которого является довольно сложный Excel-файл. Пока что я это вижу так: lighttpd + python + flask + uWSGI. Сложность в том, что, как я понял из чтения ряда статей, лучше всего для вывода xlsx использовать не внешнюю питонью библиотеку, а com-объект Винды. Но очень уж не хочется запускать сервер на ней, родимой - и с WSGI там туго, и мануалов мало, и медленнее, и вообще не кошер. Второй вариант - разделить задачи: на centOS'е пусть крутится веб с питоном, а за генерацией xlsx пусть суётся на виндовую машину с запущенным сервисом на том же питоне. Благо, машин достаточно.
Также я открыт к предложениям поменять Х на Y (lighttpd на ngnix, com на openpyxl, python на basic)
Итак, что лучше:
1) Переступить через себя и всё запустить на винде (хотя бы на IIS);
2) Разделить задачи по разным машинам с некоторой потерей производительности (не уверен, что смогу сделать нормальный многопоточный сервис генерации xlsx);
3) Оставить глупые затеи и всё переделать так: ________ (вписать нужное)
Давайте посмотрим. Хитрое (думаю, вы понимаете что вам надо и это сложнее объединения ячеек и применения к ним различных стилей форматирования) преобразование xls-файлов задача довольно трудоемкая. Запустив ее чисто на Linux вы тоже можете упереться в производительность, особенно, если дело дойдет до интерпретации формул, работой с бинарными архивированными данными или эмуляцией VBA.
С другой стороны, естественно, нужно быть к этому готовым, весь функционал на Linux вы не получите, с некоторой долей уверенности можно сказать, что получите грабли в самых неожиданных местах, например, при работе с кодировками или подготовке документа на печать.
Поэтому с моей точки зрения правильнее делать на разных системах, если хотите сделать наверняка.
На счет вашего страха перед многопоточностью - вам не надо это реализовывать. Достаточно запустить на windows-машине IIS и обращаться к нему только за этим файлом, больше не зачем. Или привлечь для этих же целей обычные шареные папки, в которых будет исполняемый файл. То есть переложить многопоточность уже на существующие сервисы и службы.
Спасибо за подтверждение о разделении систем, и ещё большее спасибо за подталкивание к идее: для юзера итогом работы веб-приложения может стать не загрузка файла через браузер, а просто появление ссылки на него на местном ftp на виндовой машине. Это хороший вариант.
Спасибо за ссылку. Всё же не уверен, что есть ресурс на изучение возможностей библиотек - файл действительно на выходе сложный, с кучей всякого-разного, и хотелось бы иметь полный функционал, а не обнаружить к середине разработки, что какая-нибудь из необходимых функций в библиотеке пока не реализована. Впрочем, испытаю самые достойные.
Если получится отбросить com - сервер безоговорочно переезжает на центось, и нет проблем.