Asynchronous Mode (`async_mode`) in acme2certifier
grindsa edited this page 2025-12-27 06:11:36 +00:00

Asynchronous Mode (async_mode) in acme2certifier

Overview

async_mode is a configuration parameter that enables asynchronous processing for certificate enrollment and challenge validation in acme2certifier. Once enabled, certain operations (such as ACME challenge validation and certificate enrollment) are executed in background threads, allowing the API to respond immediately and process requests without blocking.

Enabling async_mode

async_mode is enabled via the configuration file (typically acme_srv.cfg).

Example configuration:

[DEFAULT]
async_mode = True

Requirements for Enabling

Why Django Backend is Required:

The Django backend is required for async_mode because it provides:

  • More robust transaction management
  • Connection pooling
  • Thread safety
  • Concurrent write access

These features are essential for reliable asynchronous operations. MariaDB and PostgreSQL, when used with Django's ORM, support concurrent access and atomic transactions, ensuring that background threads can safely read and write to the database without risking data corruption or race conditions. The default WSGI backend unfortuately lacks these guarantees, which can lead to unpredictable behavior or data loss in asynchronous workflows.

Hence, when using the WSGI-handler, async_mode will be ignored and the application will fall back to synchronous processing. The system logs a message if you attempt to enable async mode without the required backend:

"asynchronous Challenge validation disabled, requires django db handler"