I'm trying to start a background process to monitor the audio and am
using pyaudio to accomplish it. I started with a separate script, but
decided it seemed simpler to move the code into my module.
The issue is that once I call the p.open to create the stream the
subprocess hangs and I never get the pid back. If I remove the "stream
=" line then it works fine.
I started out thinking this was a python issue, but when I test
outside of web2py (snip out the appropriate functions and run via cli)
it works fine.
from subprocess import *
from multiprocessing import Process, Queue
def listener(self, q):
CHANNELS = 2
RATE = 44100
INPUT_BLOCK_TIME = 0.05
FORMAT = pyaudio.paInt16
RATE = 44100
INPUT_FRAMES_PER_BLOCK = int(RATE*INPUT_BLOCK_TIME)
p = pyaudio.PyAudio()
stream = p.open(format = FORMAT,
channels = CHANNELS,
rate = RATE,
input = True,
frames_per_buffer = INPUT_FRAMES_PER_BLOCK)
q.put(os.getpid())
import time
time.sleep(300)
def startListener(self):
q = Queue()
p = Process(target=self.listener, args=[q])
p.daemon=True
p.start()
print q.get()
Is there something about threading or modules that prevents this from
working in web2py?
Any help is appreciated!