Неопределенный символ в psycopg только при использовании uwsgi

У меня есть приложение, построенное на CherryPy. Я использовал встроенный HTTP-сервер CherryPy, но теперь хочу перейти на uWSGI (и nginx).

На моей рабочей станции это работает отлично, и изменение было достаточно простым, чтобы сделать.

Однако на моем тестовом сервере я получаю следующую ошибку.

  File "./validator/dbtools.py", line 3, in <module>
    import psycopg2
  File "/home/apiuser/API25/env/lib64/python3.5/site-packages/psycopg2/__init__.py", line 50, in <module>
    from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: /home/apiuser/API25/env/lib64/python3.5/site-packages/psycopg2/_psycopg.cpython-35m-x86_64-linux-gnu.so: undefined symbol: lo_truncate64
unable to load app 0 (mountpoint='') (callable not found or import error)

Тестовый сервер отличается (CentOS 7 по сравнению с дистрибутивом на основе Ubuntu на моей рабочей станции). Когда я гуглю ошибку, я вижу сообщения о похожих ошибках, но в разных библиотеках. Библиотека psycopg не изменилась, на самом деле две версии приложения (версия CherryPy / uWSGI) работают с одного и того же VirtualEnv. Запуск его в качестве сервиса CherryPy работает по-прежнему нормально.

Я новичок во всем этом, поэтому любая помощь будет оценена!

РЕДАКТИРОВАТЬ - В ответ на вопрос Петра: я запускаю приложение с небольшим сценарием bash, как это:

#!/bin/bash
. env/bin/activate
uwsgi --socket 127.0.0.1:8030 --protocol=http --wsgi-file wsgi.py --callable wsgiapp

Две другие вещи, которые я подобрал:
1. Я установил новый тестовый сервер под управлением CentO. На этом новом сервере приложение uwsgi запускается без неопределенной символьной ошибки. Я все еще хотел бы знать, что вызывает это как вопрос изучения этого.
2. Некоторые конечные точки API включают некоторые функции, запускаемые в фоновые потоки. Они отлично работают при запуске приложения на сервере по умолчанию CherryPy. При запуске приложения с использованием uWSGI фоновые потоки не выполняются, а отображаются в очереди. Когда я завершаю работу приложения (Control-C на консоли), эти потоки внезапно запускаются, и эти задачи (особенно push-уведомления) будут выполняться.

0 ответов

Другие вопросы по тегам