### What do you see as an issue?

Similar to how `sql_alchemy_pool_recycle` defaults to 1800 seconds for the Airflow metastore: https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#config-database-sql-alchemy-pool-recycle

If users are using celery as their backend it provides extra stability to set `pool_recycle`. This problem is particularly acute for users who are using MySQL as backend for tasks because MySQL disconnects connections after 8 hours of being idle. While Airflow can usually force celery to retry connecting it does not always work and tasks can fail.

This is specifically reccomended by the SqlAlchemy docs:

* https://docs.sqlalchemy.org/en/14/core/pooling.html#setting-pool-recycle
* https://docs.sqlalchemy.org/en/14/core/engines.html#sqlalchemy.create_engine.params.pool_recycle
* https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_wait_timeout

### Solving the problem

We currently have a file which looks like this:

```python
from airflow.config_templates.default_celery import DEFAULT_CELERY_CONFIG

database_engine_options = DEFAULT_CELERY_CONFIG.get(
    "database_engine_options", {}
)

# Use pool_pre_ping to detect stale db connections
# https://github.com/apache/airflow/discussions/22113
database_engine_options["pool_pre_ping"] = True

# Use pool recyle due to MySQL disconnecting sessions after 8 hours
# https://docs.sqlalchemy.org/en/14/core/pooling.html#setting-pool-recycle
# https://docs.sqlalchemy.org/en/14/core/engines.html#sqlalchemy.create_engine.params.pool_recycle
# https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_wait_timeout
database_engine_options["pool_recycle"] = 1800

DEFAULT_CELERY_CONFIG["database_engine_options"] = database_engine_options
```

And we point the env var `AIRFLOW__CELERY__CELERY_CONFIG_OPTIONS` to this object, not sure if this is best practise?

### Anything else

Maybe just change the default options to include this?

### Are you willing to submit PR?

- [X] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

result_backend = f'db+{conf.get("database", "SQL_ALCHEMY_CONN")}'
DEFAULT_CELERY_CONFIG = {
    "accept_content": ["json"],
    "event_serializer": "json",
    "worker_prefetch_multiplier": conf.getint("celery", "worker_prefetch_multiplier"),
    "task_acks_late": True,
    "task_default_queue": conf.get("operators", "DEFAULT_QUEUE"),
    "task_default_exchange": conf.get("operators", "DEFAULT_QUEUE"),
    "task_track_started": conf.getboolean("celery", "task_track_started"),
    "broker_url": broker_url,
    "broker_transport_options": broker_transport_options_for_celery,
    "result_backend": result_backend,
    "worker_concurrency": conf.getint("celery", "WORKER_CONCURRENCY"),
    "worker_enable_remote_control": conf.getboolean("celery", "worker_enable_remote_control"),
}
celery_ssl_active = False
try:
    celery_ssl_active = conf.getboolean("celery", "SSL_ACTIVE")
except AirflowConfigException:
    log.warning("Celery Executor will run without SSL")
try:
    if celery_ssl_active:
        if broker_url and "amqp://" in broker_url:
            broker_use_ssl = {
                "keyfile": conf.get("celery", "SSL_KEY"),
                "certfile": conf.get("celery", "SSL_CERT"),
                "ca_certs": conf.get("celery", "SSL_CACERT"),
                "cert_reqs": ssl.CERT_REQUIRED,
            }
        elif broker_url and ("redis://" in broker_url or "sentinel://" in broker_url):