Celery - errno 111 connection refused
Master System Design with Codemia
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.
Celery is an asynchronous task queue/job queue based on distributed message passing. It is focused on real-time operation but supports scheduling as well. Celery is widely used for handling background tasks in web applications, allowing long-running tasks to be processed in the background while maintaining the performance of the front-end. One common issue that users may encounter when working with Celery is the "errno 111 Connection Refused" error.
Understanding Errno 111 Connection Refused in Celery
The "errno 111 Connection Refused" error typically occurs when Celery tries to connect to its designated broker (such as Redis, RabbitMQ, or Amazon SQS) but the connection attempt is rejected. This can happen for various reasons including:
- The broker service is not running.
- The connection details (e.g., URL or port) are incorrect.
- Network issues that prevent reaching the broker service.
- Security configurations like firewalls or security groups that block the connection.
Common Scenarios and Solutions
Here are several scenarios where this error might occur, along with suggested solutions:
Scenario 1: Broker Service Not Running
Make sure that the broker service (e.g., Redis, RabbitMQ) is up and running. You can check this by trying to connect to the broker using its command-line interface or a management interface.
Solution:
- Start the broker service if it's not running.
- Ensure the service automatically restarts upon failure or server reboot.
Scenario 2: Incorrect Connection Details
If your connection details are incorrect (e.g., wrong port number or URL), Celery will not be able to make a successful connection.
Solution:
- Double-check your Celery configuration settings for accuracy, focusing on the
BROKER_URLparameter. - Verify that the port numbers and URLs match what is configured for your broker service.
Scenario 3: Network Issues
Network configurations can prevent Celery from connecting to a broker if not set up correctly.
Solution:
- Ensure that there are no network issues between your Celery worker and the broker.
- If running in a cloud environment, make sure that the correct ports are open and that security groups or firewall settings allow traffic.
Scenario 4: Security Configurations
Security settings on your network or within your broker can refuse connections if not properly configured.
Solution:
- Adjust your firewall rules to allow traffic on the necessary ports.
- Modify broker settings to accept connections from your Celery workers.
Implementing Error Handling
To make your application more robust, implementing error handling and retries can help manage and mitigate connection issues:
In this example, we configure the task to retry up to five times with a 60-second countdown between retries if an OperationalError occurs, which might include a connection refusal.
Summary Table
| Issue Description | Solution Steps |
| Broker service not running | Ensure the broker is running, and configure automatic restarts. |
| Incorrect connection details | Verify BROKER_URL settings and match them with broker config. |
| Network issues | Check network connections, ensure correct port accessibility. |
| Security configurations blocking | Adjust firewall and security group settings to allow connections. |
Conclusion:
The "errno 111 Connection Refused" error in Celery is a common connectivity issue that can generally be resolved by checking service availability, network settings, security configurations, and ensuring that all connection details are correct. Proper error handling within your tasks can also help to mitigate the impact of these issues on your application’s stability and reliability.

