Во-первых, я понятия не имею, откуда у вас этот модуль демона, но я заметил, что вы import
демон в вашем примере, но не pika.
import daemon
with daemon.DaemonContext():
import pika
# any additional pika code here, maybe the creation of connection?
connection.ioloop.start()
Я сильно подозреваю, что вы используете pika (даже импорт выполняет код внутри модуля), прежде чем превратить процесс в демон. Это будет означать, что у вас есть ресурсы в оперативной памяти, которые копируются, когда демон разветвляется, и если этот модуль демона делает правильные вещи, то все открытые сокеты или файлы будут вынуждены закрываться во время процесса.
Лучше не иметь никаких объектов, чье время жизни охватывает границу демона. Сделайте так, чтобы демоны работали совершенно отдельно от любой другой обработки, и заставляли их взаимодействовать с другими процессами посредством передачи сообщений, таких как AMQP или 0MQ.