{"id":4874,"library":"amqpstorm","title":"AMQPStorm","description":"AMQPStorm is a thread-safe Python client library for RabbitMQ, offering comprehensive features for both messaging and RabbitMQ management. Currently at version 2.11.1, the library maintains an active release cadence with regular updates and improvements, ensuring stability and compatibility.","status":"active","version":"2.11.1","language":"python","source_language":"en","source_url":"https://github.com/eandersson/amqpstorm","tags":["rabbitmq","amqp","messaging","client","management","broker"],"install":[{"cmd":"pip install amqpstorm","lang":"bash","label":"Core library"},{"cmd":"pip install amqpstorm[management]","lang":"bash","label":"With Management API features"},{"cmd":"pip install amqpstorm[pool]","lang":"bash","label":"With connection pooling features"}],"dependencies":[{"reason":"Required for the Management API functionality.","package":"requests","optional":true},{"reason":"Required for the connection pooling features.","package":"amqpstorm-pool","optional":true},{"reason":"Underlying AMQP 0-9-1 frame marshalling library (core dependency, usually installed automatically).","package":"pamqp","optional":false}],"imports":[{"symbol":"Connection","correct":"from amqpstorm import Connection"},{"symbol":"UriConnection","correct":"from amqpstorm import UriConnection"},{"symbol":"Message","correct":"from amqpstorm import Message"},{"note":"Provides access to the Management API classes like ManagementApi.","symbol":"management","correct":"from amqpstorm import management"}],"quickstart":{"code":"import amqpstorm\nimport os\n\nRABBITMQ_HOST = os.environ.get('RABBITMQ_HOST', 'localhost')\nRABBITMQ_USER = os.environ.get('RABBITMQ_USER', 'guest')\nRABBITMQ_PASS = os.environ.get('RABBITMQ_PASS', 'guest')\n\ntry:\n    # Establish a connection using a context manager for proper resource handling\n    with amqpstorm.Connection(RABBITMQ_HOST, RABBITMQ_USER, RABBITMQ_PASS) as connection:\n        # Open a channel using a context manager\n        with connection.channel() as channel:\n            # Declare a queue (idempotent operation)\n            channel.queue.declare('my_queue')\n\n            # Publish a simple message to 'my_queue'\n            channel.basic.publish(body='Hello, RabbitMQ!', routing_key='my_queue')\n            print(\" [x] Sent 'Hello, RabbitMQ!'\")\nexcept amqpstorm.AMQPConnectionError as e:\n    print(f\"Error connecting to RabbitMQ: {e}\")\nexcept Exception as e:\n    print(f\"An unexpected error occurred: {e}\")","lang":"python","description":"This quickstart demonstrates how to establish a connection to RabbitMQ, open a channel, declare a queue, and publish a basic message using AMQPStorm. It uses environment variables for connection details and context managers for robust resource management."},"warnings":[{"fix":"Update consumer logic to expect and interact with `amqpstorm.Message` objects. Access message content via `message.body` and properties via `message.properties` or `message.get_property('key')`. If necessary, explicitly set `to_tuple=True` or `to_dict=True` when consuming, but using `Message` objects is recommended.","message":"Starting with version 2.0.0, messages are delivered as `Message` objects by default. Previous versions might have returned tuples or dictionaries directly from consumer functions.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"If encountering `Import Error` related to `pamqp`, consider pinning your `pamqp` version to `<3.0.0` or checking the AMQPStorm GitHub issues for a resolution or newer AMQPStorm version that addresses this compatibility. `pip install 'pamqp<3.0.0'`","message":"There's an open issue (#144) regarding `Import Error due to API Change in pamqp>=3.0.0 (specification -> commands)`, which is a core dependency. This might cause issues with newer `pamqp` versions.","severity":"gotcha","affected_versions":">=2.11.0 with pamqp>=3.0.0"},{"fix":"While this is an internal library usage, be aware that warnings might appear in Python 3.12+ environments. Keep an eye on AMQPStorm updates for a fix. No direct user-level fix is available, but it's generally harmless beyond the warning.","message":"The library's `amqpstorm/message.py` currently uses `datetime.utcnow()`, which is deprecated in Python 3.12+ in favor of `datetime.now(timezone.utc)`. This is an open issue (#143).","severity":"deprecated","affected_versions":"Python 3.12+"},{"fix":"Always use `with` statements (context managers) for `Connection` and `Channel` objects, as shown in the quickstart. This ensures resources are automatically released, even if errors occur. Explicitly call `connection.close()` and `channel.close()` if context managers are not used.","message":"Properly closing connections and channels is crucial to avoid resource leaks or hangs, especially in long-running applications or when handling errors.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Carefully configure `ssl_options` and `verify`. For production, always use `verify=True` (or provide a path to a CA bundle) and ensure `server_hostname` is correctly set. Only use `verify=False` for testing purposes where the risk is understood and mitigated.","message":"When using SSL/TLS connections, incorrect `ssl_options` or `verify` parameter settings can lead to insecure connections (e.g., no certificate verification) or failed connections (e.g., incorrect CA bundles).","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-05-22T17:09:29.311Z","next_check":"2026-07-11T00:00:00.000Z","problems":[{"fix":"Install the library using pip: 'pip install amqpstorm'.","cause":"The 'amqpstorm' library is not installed in the Python environment.","error":"ModuleNotFoundError: No module named 'amqpstorm'"},{"fix":"Verify the RabbitMQ server's hostname, port, and network connectivity; ensure the server is running and accessible.","cause":"The client is unable to establish a connection to the RabbitMQ server, possibly due to network issues or incorrect server details.","error":"amqpstorm.exception.AMQPConnectionError: Connection timed out"},{"fix":"Check the username and password for accuracy and ensure the user has the necessary permissions on the RabbitMQ server.","cause":"The provided credentials are incorrect or the user lacks permission to access the RabbitMQ server.","error":"amqpstorm.exception.AMQPConnectionError: (403) ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN"},{"fix":"Create the exchange on the RabbitMQ server or verify the exchange name for correctness.","cause":"The specified exchange does not exist in the RabbitMQ server.","error":"amqpstorm.exception.AMQPChannelError: (404) NOT_FOUND - no exchange 'non_existent_exchange' in vhost '/'"},{"fix":"Ensure no other connections are exclusively using the queue or declare the queue without the 'exclusive' flag.","cause":"Attempting to access a queue that is locked or exclusively used by another connection.","error":"amqpstorm.exception.AMQPChannelError: (405) RESOURCE_LOCKED - cannot obtain exclusive access to locked queue 'my_queue' in vhost '/'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"3.1","cli_name":"","cli_version":null,"type":"library","homepage":"https://amqpstorm.readthedocs.io/","github":null,"docs":null,"changelog":null,"pypi":"https://pypi.org/project/amqpstorm/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["communication","database","http-networking"],"base_url":null,"auth_type":null,"install_checks":{"last_tested":"2026-05-22","tag":null,"tag_description":null,"installed_version":"2.11.1","pypi_latest":"3.1","is_stale":true,"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"amqpstorm","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.08,"mem_mb":3.9,"disk_size":"19.5M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"management","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.09,"mem_mb":3.9,"disk_size":"22.9M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pool","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.09,"mem_mb":3.9,"disk_size":"19.6M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"amqpstorm","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.06,"mem_mb":3.9,"disk_size":"20M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"management","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0.06,"mem_mb":3.9,"disk_size":"23M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pool","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.06,"mem_mb":3.9,"disk_size":"20M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"amqpstorm","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.14,"mem_mb":4.5,"disk_size":"21.8M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"management","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.15,"mem_mb":4.5,"disk_size":"25.5M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pool","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.14,"mem_mb":4.5,"disk_size":"21.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"amqpstorm","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.9,"import_time_s":0.14,"mem_mb":4.5,"disk_size":"22M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"management","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.4,"import_time_s":0.14,"mem_mb":4.5,"disk_size":"26M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pool","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.9,"import_time_s":0.14,"mem_mb":4.5,"disk_size":"22M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"amqpstorm","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.11,"mem_mb":4.4,"disk_size":"13.6M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"management","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.12,"mem_mb":4.4,"disk_size":"17.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pool","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.1,"mem_mb":4.4,"disk_size":"13.6M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"amqpstorm","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.4,"import_time_s":0.12,"mem_mb":4.4,"disk_size":"14M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"management","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.9,"import_time_s":0.12,"mem_mb":4.4,"disk_size":"18M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pool","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.4,"import_time_s":0.11,"mem_mb":4.4,"disk_size":"14M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"amqpstorm","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.12,"mem_mb":4.7,"disk_size":"13.3M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"management","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.12,"mem_mb":4.7,"disk_size":"16.8M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pool","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.11,"mem_mb":4.7,"disk_size":"13.3M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"amqpstorm","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.11,"mem_mb":4.7,"disk_size":"14M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"management","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.5,"import_time_s":0.11,"mem_mb":4.7,"disk_size":"17M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pool","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.11,"mem_mb":4.7,"disk_size":"14M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"amqpstorm","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.08,"mem_mb":3.8,"disk_size":"19.0M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"management","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.08,"mem_mb":3.8,"disk_size":"22.1M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pool","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.08,"mem_mb":3.8,"disk_size":"19.1M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"amqpstorm","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.9,"import_time_s":0.07,"mem_mb":3.8,"disk_size":"19M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"management","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":0.07,"mem_mb":3.8,"disk_size":"23M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pool","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.9,"import_time_s":0.07,"mem_mb":3.8,"disk_size":"20M"}]},"_links":{"self":"https://checklist.day/api/registry/amqpstorm","v1":"https://checklist.day/v1/registry/amqpstorm","v1_install":"https://checklist.day/v1/registry/amqpstorm/install","v1_imports":"https://checklist.day/v1/registry/amqpstorm/imports","v1_compatibility":"https://checklist.day/v1/registry/amqpstorm/compatibility","v1_quickstart":"https://checklist.day/v1/registry/amqpstorm/quickstart","docs":"https://checklist.day/docs"}}