Как я должен делиться и хранить данные в небольшом многопоточном приложении на Python?

1

Я пишу небольшое многопоточное приложение на основе python на стороне клиента, которое содержит небольшой веб-сервер (только обслуживает страницу на localhost) и демон. Веб-сервер загружает и помещает данные в постоянный "хранилище данных", а демон обрабатывает эти данные, модифицирует его и добавляет еще несколько. Он также должен следить за синхронизацией с диском.

Я бы хотел как можно больше избежать сложных внешних вещей, таких как SQL или другие базы данных.

Каковы хорошие и простые способы проектирования хранилища данных? Бонусные очки, если ваше решение использует только стандартный питон.

Теги:
multithreading
concurrency
datastore

1 ответ

0
Лучший ответ

То, что вы ищете, не слишком специфично для Python, потому что AFAIU вы хотите общаться между двумя разными процессами, которые только случайно записаны на Python. Если это действительно ваша проблема, вы должны искать общее решение, а не специфичное для Python.

Я думаю, что простой хранилище данных с ключом, отличное от SQL, например Redis, может быть очень приятным решением для вашей ситуации. Вопреки "сложному" использованию инструмента, разработанного специально для такой цели, на самом деле сделает ваш код более простым.

Если вы настаиваете на решении только для Python, рассмотрите возможность использования привязок Python для SQLite, которые предварительно устанавливаются с помощью Python. SQLite DB может быть одновременно использован двумя процессами безопасным образом, если ваша семантика доступа к данным хорошо определена (т.е. Проблемы, которые вы должны решить в любом случае, инструмент невзирая на).

  • 0
    Я говорю о многопоточном приложении, а не о многопроцессорном. И я специально сказал, что хотел бы избежать таких вещей, как sqlite или redis. Конечно, если ни у кого нет хорошего решения, я выберу одно из этих решений. Кроме того, я знаю, что то, что я спрашиваю, не слишком специфично для python, но, поскольку я знаю, что собираюсь написать приложение на python, я подумал, что мог бы также упомянуть об этом.
  • 0
    @static_rtti - Что вы подразумеваете под «маленький веб-сервер ... и демон» ?? Вы говорите, что на самом деле это два потока в одном процессе (как в deamon = daemonized thread, а не daemonized process)? И если это чисто многопоточное решение, то разговоры о «хранилище данных» еще более запутаны, поскольку предполагают, что вы хотите использовать файл на диске в качестве средства IPC между двумя потоками. Можете ли вы уточнить, что такое настоящая архитектура?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню