signal ValueError when using pymultinest sampler in API service
When running code that calls bilby with pymultinest sampling using an API service (see this repo and PR: https://github.com/nuclear-multimessenger-astronomy/nmma/pull/99), I get the ValueError below. The error is not thrown when running the same code but avoiding the API service.
Traceback (most recent call last):
File "/Users/bhealy/nmma/api/app.py", line 197, in run_nmma_model
main(args=args)
File "/Users/bhealy/nmma/nmma/em/analysis.py", line 608, in main
result = bilby.run_sampler(
File "/Users/bhealy/miniforge3/envs/nmma_api2/lib/python3.9/site-packages/bilby/core/sampler/__init__.py", line 234, in run_sampler
result = sampler.run_sampler()
File "/Users/bhealy/miniforge3/envs/nmma_api2/lib/python3.9/site-packages/bilby/core/sampler/base_sampler.py", line 96, in wrapped
output = method(self, *args, **kwargs)
File "/Users/bhealy/miniforge3/envs/nmma_api2/lib/python3.9/site-packages/bilby/core/sampler/pymultinest.py", line 156, in run_sampler
out = pymultinest.solve(
File "/Users/bhealy/miniforge3/envs/nmma_api2/lib/python3.9/site-packages/pymultinest/solve.py", line 71, in solve
run(**kwargs)
File "/Users/bhealy/miniforge3/envs/nmma_api2/lib/python3.9/site-packages/pymultinest/run.py", line 237, in run
prev_handler = signal.signal(signal.SIGINT, interrupt_handler)
File "/Users/bhealy/miniforge3/envs/nmma_api2/lib/python3.9/signal.py", line 56, in signal
handler = _signal.signal(_enum_to_int(signalnum), _enum_to_int(handler))
ValueError: signal only works in main thread of the main interpreter