Sqlite.SqliteException Не удалось открыть путь к файлу файла базы данных (CannotOpen) в Xamarin.Forms

Да, есть несколько бит, которые могут (или не могут) укусить вас.

  • Когда вы запускаете что-то вроде asyncio, он ожидает запустить один поток или процесс. Это само по себе не работает с параллельной обработкой. Вы каким-то образом должны распределять работу, оставляя операции ввода-вывода (в частности, в сокетах) в одном потоке / процессе.
  • Хотя ваша идея передать отдельные подключения другому процессу обработчика, это приятно, это трудно реализовать. Первым препятствием является то, что вам нужно вытащить соединение из asyncio, не закрывая его. Следующим препятствием является то, что вы не можете просто отправить файловый дескриптор другому процессу, если вы не используете конкретный для платформы (возможно, Linux) код из C-расширения.
  • Обратите внимание, что модуль multiprocessing известен создайте несколько потоков для связи. В большинстве случаев, когда вы используете структуры связи (например, Queue s), создается поток. К сожалению, эти потоки не полностью невидимы. Например, они могут не сработать чисто (когда вы намерены прекратить свою программу), но в зависимости от их количества использование ресурсов может быть заметным само по себе.

Если вы действительно собираетесь обрабатывать отдельные соединения в отдельных процессах, я предлагаю изучить различные подходы. Например, вы можете поместить сокет в режим прослушивания, а затем одновременно принимать соединения из нескольких рабочих процессов параллельно. Как только рабочий закончит обработку запроса, он может принять следующее соединение, поэтому вы все равно используете меньше ресурсов, чем форматирование процесса для каждого соединения. Spamassassin и Apache (mpm prefork) могут использовать эту рабочую модель, например. Это может оказаться проще и надежнее в зависимости от вашего варианта использования. В частности, вы можете заставить своих работников умереть после обслуживания настроенного количества запросов и быть вызванными мастер-процессом, тем самым устраняя большую часть негативных последствий утечек памяти.

0
задан Siddharth 3 March 2019 в 14:30
поделиться