Rasa-x ,pika-event-broker, daemonic processes are not allowed to have children

I recently updated rasa from 1.10.15 to 1.10.18, when I tried to run the rasa-x with the same config I am getting “daemonic processes are not allowed to have children” this is related to pika-event-broker.

For 1.10.15 my endponits.yml contained the following

event_broker:
  type: "pika"
  url: ${RABBITMQ_HOST}
  username: ${RABBITMQ_USERNAME}
  password: ${RABBITMQ_PASSWORD}
  queue: ${RABBITMQ_QUEUE}

I was getting an error related to queue or queues not being supplied so I changed this to

event_broker:
  type: "pika"
  url: ${RABBITMQ_HOST}
  username: ${RABBITMQ_USERNAME}
  password: ${RABBITMQ_PASSWORD}
  queues:
      - ${RABBITMQ_QUEUE}

The error went away but now I am getting a different error, the logs are mentioned below, If I remove the event_broker code from endpoints.yml everything works but that just defeats the purpose of rasa-x.

2020-12-17 08:36:51 DEBUG    sanic_jwt.configuration  - validating provided secret
2020-12-17 08:36:51 DEBUG    sanic_jwt.configuration  - validating keys (if needed)
2020-12-17 08:36:51 DEBUG    sanic_jwt.configuration  - loading secret and/or keys (if needed)
2020-12-17 08:36:51 DEBUG    rasa.core.utils  - Available web server routes: 
/conversations/<conversation_id>/messages          POST                           add_message
/conversations/<conversation_id>/tracker/events    POST                           append_events
/auth                                              POST                           auth_bp.AuthenticateEndpoint
/auth/me                                           GET                            auth_bp.RetrieveUserEndpoint
/auth/verify                                       GET                            auth_bp.VerifyEndpoint
/webhooks/callback                                 GET                            callback_webhook.health
/webhooks/callback/webhook                         POST                           callback_webhook.webhook
/webhooks/rasa                                     GET                            custom_webhook_RasaChatInput.health
/webhooks/rasa/webhook                             POST                           custom_webhook_RasaChatInput.receive
/webhooks/rest                                     GET                            custom_webhook_RestInput.health
/webhooks/rest/webhook                             POST                           custom_webhook_RestInput.receive
/model/test/intents                                POST                           evaluate_intents
/model/test/stories                                POST                           evaluate_stories
/conversations/<conversation_id>/execute           POST                           execute_action
/domain                                            GET                            get_domain
/                                                  GET                            hello
/model                                             PUT                            load_model
/model/parse                                       POST                           parse
/conversations/<conversation_id>/predict           POST                           predict
/conversations/<conversation_id>/tracker/events    PUT                            replace_events
/conversations/<conversation_id>/story             GET                            retrieve_story
/conversations/<conversation_id>/tracker           GET                            retrieve_tracker
/status                                            GET                            status
/model/predict                                     POST                           tracker_predict
/model/train                                       POST                           train
/conversations/<conversation_id>/trigger_intent    POST                           trigger_intent
/model                                             DELETE                         unload_model
/version                                           GET                            version
2020-12-17 08:36:51 INFO     root  - Starting Rasa server on http://localhost:5005
2020-12-17 08:36:51 DEBUG    rasa.core.utils  - Using 3 Sanic workers.
Starting Rasa X in production mode... 🚀
2020-12-17 08:36:51 INFO     root  - Enabling coroutine debugging. Loop id 94381788292368.
2020-12-17 08:36:51 DEBUG    root  - Could not load interpreter from 'None'.
2020-12-17 08:36:51 INFO     root  - Enabling coroutine debugging. Loop id 94381788292368.
2020-12-17 08:36:51 DEBUG    root  - Could not load interpreter from 'None'.
2020-12-17 08:36:51 INFO     root  - Enabling coroutine debugging. Loop id 94381788292368.
2020-12-17 08:36:51 DEBUG    root  - Could not load interpreter from 'None'.
Process Process-1:
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
    self.run()
  File "/usr/local/lib/python3.7/multiprocessing/process.py", line 99, in run
    self._target(*self._args, **self._kwargs)
  File "/opt/venv/lib/python3.7/site-packages/sanic/server.py", line 892, in serve
    trigger_events(before_start, loop)
  File "/opt/venv/lib/python3.7/site-packages/sanic/server.py", line 668, in trigger_events
    loop.run_until_complete(result)
  File "uvloop/loop.pyx", line 1456, in uvloop.loop.Loop.run_until_complete
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/run.py", line 243, in load_agent_on_start
    _broker = EventBroker.create(endpoints.event_broker)
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/broker.py", line 21, in create
    return _create_from_endpoint_config(obj)
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/broker.py", line 58, in _create_from_endpoint_config
    broker = PikaEventBroker.from_endpoint_config(endpoint_config)
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/pika.py", line 651, in from_endpoint_config
    return cls(broker_config.url, **broker_config.kwargs)
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/pika.py", line 623, in __init__
    self._connect()
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/pika.py", line 661, in _connect
    self.process = self._start_pika_process()
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/pika.py", line 671, in _start_pika_process
    process.start()
  File "/usr/local/lib/python3.7/multiprocessing/process.py", line 110, in start
    'daemonic processes are not allowed to have children'
AssertionError: daemonic processes are not allowed to have children
/usr/local/lib/python3.7/multiprocessing/process.py:313: RuntimeWarning: coroutine 'Loop.create_server' was never awaited
  traceback.print_exc()
Process Process-2:
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
    self.run()
  File "/usr/local/lib/python3.7/multiprocessing/process.py", line 99, in run
    self._target(*self._args, **self._kwargs)
  File "/opt/venv/lib/python3.7/site-packages/sanic/server.py", line 892, in serve
    trigger_events(before_start, loop)
  File "/opt/venv/lib/python3.7/site-packages/sanic/server.py", line 668, in trigger_events
    loop.run_until_complete(result)
  File "uvloop/loop.pyx", line 1456, in uvloop.loop.Loop.run_until_complete
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/run.py", line 243, in load_agent_on_start
    _broker = EventBroker.create(endpoints.event_broker)
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/broker.py", line 21, in create
    return _create_from_endpoint_config(obj)
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/broker.py", line 58, in _create_from_endpoint_config
    broker = PikaEventBroker.from_endpoint_config(endpoint_config)
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/pika.py", line 651, in from_endpoint_config
    return cls(broker_config.url, **broker_config.kwargs)
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/pika.py", line 623, in __init__
    self._connect()
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/pika.py", line 661, in _connect
    self.process = self._start_pika_process()
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/pika.py", line 671, in _start_pika_process
    process.start()
  File "/usr/local/lib/python3.7/multiprocessing/process.py", line 110, in start
    'daemonic processes are not allowed to have children'
AssertionError: daemonic processes are not allowed to have children
/usr/local/lib/python3.7/multiprocessing/process.py:313: RuntimeWarning: coroutine 'Loop.create_server' was never awaited
  traceback.print_exc()
Process Process-3:
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
    self.run()
  File "/usr/local/lib/python3.7/multiprocessing/process.py", line 99, in run
    self._target(*self._args, **self._kwargs)
  File "/opt/venv/lib/python3.7/site-packages/sanic/server.py", line 892, in serve
    trigger_events(before_start, loop)
  File "/opt/venv/lib/python3.7/site-packages/sanic/server.py", line 668, in trigger_events
    loop.run_until_complete(result)
  File "uvloop/loop.pyx", line 1456, in uvloop.loop.Loop.run_until_complete
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/run.py", line 243, in load_agent_on_start
    _broker = EventBroker.create(endpoints.event_broker)
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/broker.py", line 21, in create
    return _create_from_endpoint_config(obj)
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/broker.py", line 58, in _create_from_endpoint_config
    broker = PikaEventBroker.from_endpoint_config(endpoint_config)
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/pika.py", line 651, in from_endpoint_config
    return cls(broker_config.url, **broker_config.kwargs)
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/pika.py", line 623, in __init__
    self._connect()
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/pika.py", line 661, in _connect
    self.process = self._start_pika_process()
  File "/opt/venv/lib/python3.7/site-packages/rasa/core/brokers/pika.py", line 671, in _start_pika_process
    process.start()
  File "/usr/local/lib/python3.7/multiprocessing/process.py", line 110, in start
    'daemonic processes are not allowed to have children'
AssertionError: daemonic processes are not allowed to have children
/usr/local/lib/python3.7/multiprocessing/process.py:313: RuntimeWarning: coroutine 'Loop.create_server' was never awaited
  traceback.print_exc()

Any idea what’s the issue here, I did find daemonic processes are not allowed to have children · Issue #4525 · celery/celery · GitHub but not sure how am I suppose to use in the above issue.

Was this an error or just a warning? If it was a warning, it should be fine to keep it as you had before

Nope, this was an error, it resulted in the production docker image being recreated again and again when I tried to up rasa-x with these changes, I ended up reverting things.

Since then we have moved to rasa 2.X and have not faced this issue again.