Я исправил это. Я не правильно сохранил общедоступную информацию профиля для подписчика в моей базе данных, и идентификатор человека пуст. По умолчанию Facebook отправляет полезную нагрузку get_started, если вы отправляете сообщение с пустым отправителем
Короткий ответ: не используйте Sqlite3 в потоковом приложении.
базы данных Sqlite3 масштабируются хорошо для размера, а скорее ужасно для параллелизма. Вы будете заполонены с "Базой данных, заблокирован" ошибки.
, Если Вы делаете, Вам будет нужно соединение на поток, и необходимо удостовериться, чтобы эти соединения вымылись после себя. Это традиционно обрабатывается с помощью локальных для потока сессий и выполняется скорее хорошо (например), с помощью ScopedSession SQLALCHEMY. Я использовал бы это на вашем месте, даже если Вы не используете функции SQLAlchemy ORM.
"... создайте несколько потоков, которые соберут данные в указанном интервале и кэше что данные локально в sqlite базу данных. Затем в основном потоке запускают приложение CherryPy, которое запросит, что sqlite дб и служит данным. "
не тратят впустую много времени на потоках. Вещами, которые Вы описываете, являются просто процессы ОС. Только запустите обычные процессы, чтобы сделать сбор и выполнить Cherry Py.
у Вас нет реального использования для параллельных потоков в единственном процессе для этого. Сбор данных в указанном интервале - при выполнении с простыми процессами ОС - может быть запланирован ОС очень просто. Крон, например, делает отличную работу по этому.
А Приложение CherryPy, также, является процессом ОС, ни одним потоком некоторого большего процесса.
Просто процессы использования - потоки не помогут Вам.
В зависимости от приложения DB мог быть реальными издержками. Если мы говорим об энергозависимых данных, возможно, Вы могли бы пропустить коммуникацию через DB полностью и совместно использовать данные между процесс сбора данных и процесс (процессы) обслуживания данных через IPC. Это не опция, если данные должны быть сохранены, конечно.
В зависимости от скорости передачи данных sqlite мог быть точно корректным способом сделать это. Вся база данных заблокирована для каждой записи, таким образом, Вы не выходите на более высокий уровень к 1000-м одновременных записей в секунду. Но если у Вас только есть некоторые, это - самый безопасный способ гарантировать, что Вы не перезаписываете друг друга.