Przeglądaj źródła

[docs] Document lower case setting changes

Ask Solem 9 lat temu
rodzic
commit
1faa01e04d

+ 7 - 3
celery/app/defaults.py

@@ -221,7 +221,9 @@ NAMESPACES = Namespace(
         default_queue=Option('celery'),
         default_rate_limit=Option(type='string'),
         default_routing_key=Option('celery'),
-        eager_propagates_exceptions=Option(False, type='bool'),
+        eager_propagates=Option(
+            False, type='bool', old={'celery_eager_propagates_exceptions'},
+        ),
         ignore_result=Option(False, type='bool'),
         protocol=Option(1, type='int', old={'celery_task_protocol'}),
         publish_retry=Option(
@@ -273,7 +275,7 @@ NAMESPACES = Namespace(
         hijack_root_logger=Option(True, type='bool'),
         log_color=Option(type='bool'),
         log_format=Option(DEFAULT_PROCESS_LOG_FMT),
-        lost_wait=Option(10.0, type='float'),
+        lost_wait=Option(10.0, type='float', old={'celeryd_worker_lost_wait'}),
         max_memory_per_child=Option(type='int'),
         max_tasks_per_child=Option(type='int'),
         pool=Option(DEFAULT_POOL),
@@ -286,7 +288,9 @@ NAMESPACES = Namespace(
         redirect_stdouts_level=Option(
             'WARNING', old={'celery_redirect_stdouts_level'},
         ),
-        send_events=Option(False, type='bool'),
+        send_task_events=Option(
+            False, type='bool', old={'celeryd_send_events'},
+        ),
         state_db=Option(),
         task_log_format=Option(DEFAULT_TASK_LOG_FMT),
         timer=Option(type='string'),

+ 2 - 3
celery/app/task.py

@@ -667,7 +667,7 @@ class Task(object):
         :param args: positional arguments passed on to the task.
         :param kwargs: keyword arguments passed on to the task.
         :keyword throw: Re-raise task exceptions.  Defaults to
-                        the :setting:`task_eager_propagates_exceptions`
+                        the :setting:`task_eager_propagates`
                         setting.
 
         :rtype :class:`celery.result.EagerResult`:
@@ -684,8 +684,7 @@ class Task(object):
         kwargs = kwargs or {}
         task_id = options.get('task_id') or uuid()
         retries = options.get('retries', 0)
-        throw = app.either('task_eager_propagates_exceptions',
-                           options.pop('throw', None))
+        throw = app.either('task_eager_propagates', options.pop('throw', None))
 
         # Make sure we get the task instance, not class.
         task = app._tasks[self.name]

+ 1 - 1
celery/bin/worker.py

@@ -242,7 +242,7 @@ class worker(Command):
             Option('--scheduler', dest='scheduler_cls'),
             Option('-S', '--statedb',
                    default=conf.worker_state_db, dest='state_db'),
-            Option('-E', '--events', default=conf.worker_send_events,
+            Option('-E', '--events', default=conf.worker_send_task_events,
                    action='store_true', dest='send_events'),
             Option('--time-limit', type='float', dest='task_time_limit',
                    default=conf.task_time_limit),

+ 2 - 2
celery/tests/tasks/test_tasks.py

@@ -462,8 +462,8 @@ class test_apply_task(TasksCase):
         with self.assertRaises(KeyError):
             self.raising.apply(throw=True)
 
-    def test_apply_with_task_eager_propagates_exceptions(self):
-        self.app.conf.task_eager_propagates_exceptions = True
+    def test_apply_with_task_eager_propagates(self):
+        self.app.conf.task_eager_propagates = True
         with self.assertRaises(KeyError):
             self.raising.apply()
 

+ 1 - 1
celery/worker/__init__.py

@@ -358,7 +358,7 @@ class WorkController(object):
         self.logfile = logfile
 
         self.concurrency = either('worker_concurrency', concurrency)
-        self.send_events = either('worker_send_events', send_events)
+        self.send_events = either('worker_send_task_events', send_events)
         self.pool_cls = either('worker_pool', pool_cls)
         self.consumer_cls = either('worker_consumer', consumer_cls)
         self.timer_cls = either('worker_timer', timer_cls)

+ 139 - 6
docs/configuration.rst

@@ -34,6 +34,139 @@ It should contain all you need to run a basic Celery set-up.
 
     task_annotations = {'tasks.add': {'rate_limit': '10/s'}}
 
+
+.. _conf-old-settings-map:
+
+New lowercase settings
+======================
+
+Version 4.0 introduced new lower case settings and setting organization.
+
+The major difference between previous versions, apart from the lower case
+names, are the renaming of some prefixes, like ``celerybeat_`` to ``beat_``,
+``celeryd_`` to ``worker_``, and most of the top level ``celery_`` settings
+have been moved into a new  ``task_`` prefix.
+
+Celery will still be able to read old configuration files, so there is no
+rush in moving to the new settings format.
+
+=====================================  ==============================================
+**Setting name**                       **Replace with**
+=====================================  ==============================================
+``CELERY_ACCEPT_CONTENT``              :setting:`accept_content`
+``ADMINS``                             :setting:`admins`
+``CELERY_ENABLE_UTC``                  :setting:`enable_utc`
+``CELERY_IMPORTS``                     :setting:`imports`
+``CELERY_INCLUDE``                     :setting:`include`
+``SERVER_EMAIL``                       :setting:`server_email`
+``CELERY_TIMEZONE``                    :setting:`timezone`
+``CELERYBEAT_MAX_LOOP_INTERVAL``       :setting:`beat_max_loop_interval`
+``CELERYBEAT_SCHEDULE``                :setting:`beat_schedule`
+``CELERYBEAT_SCHEDULER``               :setting:`beat_scheduler`
+``CELERYBEAT_SCHEDULE_FILENAME``       :setting:`beat_schedule_filename`
+``CELERYBEAT_SYNC_EVERY``              :setting:`beat_sync_every`
+``BROKER_URL``                         :setting:`broker_url`
+``BROKER_TRANSPORT``                   :setting:`broker_transport`
+``BROKER_TRANSPORT_OPTIONS``           :setting:`broker_transport_options`
+``BROKER_CONNECTION_TIMEOUT``          :setting:`broker_connection_timeout`
+``BROKER_CONNECTION_RETRY``            :setting:`broker_connection_retry`
+``BROKER_CONNECTION_MAX_RETRIES``      :setting:`broker_connection_max_retries`
+``BROKER_FAILOVER_STRATEGY``           :setting:`broker_failover_strategy`
+``BROKER_HEARTBEAT``                   :setting:`broker_heartbeat`
+``BROKER_LOGIN_METHOD``                :setting:`broker_login_method`
+``BROKER_POOL_LIMIT``                  :setting:`broker_pool_limit`
+``BROKER_USE_SSL``                     :setting:`broker_use_ssl`
+``CELERY_CACHE_BACKEND``               :setting:`cache_backend`
+``CELERY_CACHE_BACKEND_OPTIONS``       :setting:`cache_backend_options`
+``CASSANDRA_COLUMN_FAMILY``            :setting:`cassandra_table`
+``CASSANDRA_ENTRY_TTL``                :setting:`cassandra_entry_ttl`
+``CASSANDRA_KEYSPACE``                 :setting:`cassandra_keyspace`
+``CASSANDRA_PORT``                     :setting:`cassandra_port`
+``CASSANDRA_READ_CONSISTENCY``         :setting:`cassandra_read_consistency`
+``CASSANDRA_SERVERS``                  :setting:`cassandra_servers`
+``CASSANDRA_WRITE_CONSISTENCY``        :setting:`cassandra_write_consistency`
+``CELERY_COUCHBASE_BACKEND_SETTINGS``  :setting:`couchbase_backend_settings`
+``EMAIL_HOST``                         :setting:`email_host`
+``EMAIL_HOST_USER``                    :setting:`email_host_user`
+``EMAIL_HOST_PASSWORD``                :setting:`email_host_password`
+``EMAIL_PORT``                         :setting:`email_port`
+``EMAIL_TIMEOUT``                      :setting:`email_timeout`
+``EMAIL_USE_SSL``                      :setting:`email_use_ssl`
+``EMAIL_USE_TLS``                      :setting:`email_use_tls`
+``CELERY_MONGODB_BACKEND_SETTINGS``    :setting:`mongodb_backend_settings`
+``CELERY_EVENT_QUEUE_EXPIRES``         :setting:`event_queue_expires`
+``CELERY_EVENT_QUEUE_TTL``             :setting:`event_queue_ttl`
+``CELERY_EVENT_SERIALIZER``            :setting:`event_serializer`
+``CELERY_REDIS_DB``                    :setting:`redis_db`
+``CELERY_REDIS_HOST``                  :setting:`redis_host`
+``CELERY_REDIS_MAX_CONNECTIONS``       :setting:`redis_max_connections`
+``CELERY_REDIS_PASSWORD``              :setting:`redis_password`
+``CELERY_REDIS_PORT``                  :setting:`redis_port`
+``CELERY_RESULT_BACKEND``              :setting:`result_backend`
+``CELERY_MAX_CACHED_RESULTS``          :setting:`result_cache_max`
+``CELERY_MESSAGE_COMPRESSION``         :setting:`result_compression`
+``CELERY_RESULT_EXCHANGE``             :setting:`result_exchange`
+``CELERY_RESULT_EXCHANGE_TYPE``        :setting:`result_exchange_type`
+``CELERY_TASK_RESULT_EXPIRES``         :setting:`result_expires`
+``CELERY_RESULT_PERSISTENT``           :setting:`result_persistent`
+``CELERY_RESULT_SERIALIZER``           :setting:`result_serializer`
+``CELERY_RESULT_DBURI``                :setting:`sqlalchemy_dburi`
+``CELERY_RESULT_ENGINE_OPTIONS``       :setting:`sqlalchemy_engine_options`
+``-*-_DB_SHORT_LIVED_SESSIONS``        :setting:`sqlalchemy_short_lived_sessions`
+``CELERY_RESULT_DB_TABLE_NAMES``       :setting:`sqlalchemy_db_names`
+``CELERY_SECURITY_CERTIFICATE``        :setting:`security_certificate`
+``CELERY_SECURITY_CERT_STORE``         :setting:`security_cert_store`
+``CELERY_SECURITY_KEY``                :setting:`security_key`
+``CELERY_ACKS_LATE``                   :setting:`task_acks_late`
+``CELERY_ALWAYS_EAGER``                :setting:`task_always_eager`
+``CELERY_ANNOTATIONS``                 :setting:`task_annotations`
+``CELERY_MESSAGE_COMPRESSION``         :setting:`task_compression`
+``CELERY_CREATE_MISSING_QUEUES``       :setting:`task_create_missing_queues`
+``CELERY_DEFAULT_DELIVERY_MODE``       :setting:`task_default_delivery_mode`
+``CELERY_DEFAULT_EXCHANGE``            :setting:`task_default_exchange`
+``CELERY_DEFAULT_EXCHANGE_TYPE``       :setting:`task_default_exchange_type`
+``CELERY_DEFAULT_QUEUE``               :setting:`task_default_queue`
+``CELERY_DEFAULT_RATE_LIMIT``          :setting:`task_default_rate_limit`
+``CELERY_DEFAULT_ROUTING_KEY``         :setting:`task_default_routing_key`
+``-"-_EAGER_PROPAGATES_EXCEPTIONS``    :setting:`task_eager_propagates`
+``CELERY_IGNORE_RESULT``               :setting:`task_ignore_result`
+``CELERY_TASK_PUBLISH_RETRY``          :setting:`task_publish_retry`
+``CELERY_TASK_PUBLISH_RETRY_POLICY``   :setting:`task_publish_retry_policy`
+``CELERY_QUEUES``                      :setting:`task_queues`
+``CELERY_ROUTES``                      :setting:`task_routes`
+``CELERY_SEND_TASK_ERROR_EMAILS``      :setting:`task_send_error_emails`
+``CELERY_SEND_TASK_SENT_EVENT``        :setting:`task_send_sent_event`
+``CELERY_TASK_SERIALIZER``             :setting:`task_serializer`
+``CELERYD_TASK_SOFT_TIME_LIMIT``       :setting:`task_soft_time_limit`
+``CELERYD_TASK_TIME_LIMIT``            :setting:`task_time_limit`
+``CELERY_TRACK_STARTED``               :setting:`task_track_started`
+``CELERYD_AGENT``                      :setting:`worker_agent`
+``CELERYD_AUTOSCALER``                 :setting:`worker_autoscaler`
+``CELERYD_AUTORELAODER``               :setting:`worker_autoreloader`
+``CELERYD_CONCURRENCY``                :setting:`worker_concurrency`
+``CELERYD_CONSUMER``                   :setting:`worker_consumer`
+``CELERY_WORKER_DIRECT``               :setting:`worker_direct`
+``CELERY_DISABLE_RATE_LIMITS``         :setting:`worker_disable_rate_limits`
+``CELERY_ENABLE_REMOTE_CONTROL``       :setting:`worker_enable_remote_control`
+``CELERYD_FORCE_EXECV``                :setting:`worker_force_execv`
+``CELERYD_HIJACK_ROOT_LOGGER``         :setting:`worker_hijack_root_logger`
+``CELERYD_LOG_COLOR``                  :setting:`worker_log_color`
+``CELERYD_LOG_FORMAT``                 :setting:`worker_log_format`
+``CELERYD_WORKER_LOST_WAIT``           :setting:`worker_lost_wait`
+``CELERYD_MAX_TASKS_PER_CHILD``        :setting:`worker_max_tasks_per_child`
+``CELERYD_POOL``                       :setting:`worker_pool`
+``CELERYD_POOL_PUTLOCKS``              :setting:`worker_pool_putlocks`
+``CELERYD_POOL_RESTARTS``              :setting:`worker_pool_restarts`
+``CELERYD_PREFETCH_MULTIPLIER``        :setting:`worker_prefetch_multiplier`
+``CELERYD_REDIRECT_STDOUTS``           :setting:`worker_redirect_stdouts`
+``CELERYD_REDIRECT_STDOUTS_LEVEL``     :setting:`worker_redirect_stdouts_level`
+``CELERYD_SEND_EVENTS``                :setting:`worker_send_task_events`
+``CELERYD_STATE_DB``                   :setting:`worker_state_db`
+``CELERYD_TASK_LOG_FORMAT``            :setting:`worker_task_log_format`
+``CELERYD_TIMER``                      :setting:`worker_timer`
+``CELERYD_TIMER_PRECISION``            :setting:`worker_timer_precision`
+=====================================  ==============================================
+
 Configuration Directives
 ========================
 
@@ -223,10 +356,10 @@ is already evaluated.
 That is, tasks will be executed locally instead of being sent to
 the queue.
 
-.. setting:: task_eager_propagates_exceptions
+.. setting:: task_eager_propagates
 
-task_eager_propagates_exceptions
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+task_eager_propagates
+~~~~~~~~~~~~~~~~~~~~~
 
 If this is :const:`True`, eagerly executed tasks (applied by `task.apply()`,
 or when the :setting:`task_always_eager` setting is enabled), will
@@ -1785,10 +1918,10 @@ george@vandelay.com and kramer@vandelay.com:
 Events
 ------
 
-.. setting:: worker_send_events
+.. setting:: worker_send_task_events
 
-worker_send_events
-~~~~~~~~~~~~~~~~~~
+worker_send_task_events
+~~~~~~~~~~~~~~~~~~~~~~~
 
 Send task-related events so that tasks can be monitored using tools like
 `flower`.  Sets the default value for the workers :option:`-E` argument.

+ 68 - 1
docs/whatsnew-4.0.rst

@@ -68,7 +68,6 @@ The Task base class no longer automatically register tasks
 
 The metaclass has been removed blah blah
 
-
 Arguments now verified when calling a task
 ------------------------------------------
 
@@ -93,9 +92,77 @@ running 4.x:
         'fanout_prefix': True,
     }
 
+Lowercase setting names
+-----------------------
+
+In the pursuit of beauty all settings have been renamed to be in all
+lowercase, in a consistent naming scheme.
+
+This change is fully backwards compatible so you can still use the uppercase
+setting names.
+
+The loader will try to detect if your configuration is using the new format,
+and act accordingly, but this also means that you are not allowed to mix and
+match new and old setting names, that is unless you provide a value for both
+alternatives.
+
+The major difference between previous versions, apart from the lower case
+names, are the renaming of some prefixes, like ``celerybeat_`` to ``beat_``,
+``celeryd_`` to ``worker_``.
+
+The ``celery_`` prefix has also been removed, and task related settings
+from this namespace is now prefixed by ``task_``, worker related settings
+with ``worker_``.
+
+Apart from this most of the settings will be the same in lowercase, apart from
+a few special ones:
+
+=====================================  ==========================================================
+**Setting name**                       **Replace with**
+=====================================  ==========================================================
+``CELERY_MAX_CACHED_RESULTS``          :setting:`result_cache_max`
+``CELERY_MESSAGE_COMPRESSION``         :setting:`result_compression`/:setting:`task_compression`.
+``CELERY_TASK_RESULT_EXPIRES``         :setting:`result_expires`
+``CELERY_RESULT_DBURI``                :setting:`sqlalchemy_dburi`
+``CELERY_RESULT_ENGINE_OPTIONS``       :setting:`sqlalchemy_engine_options`
+``-*-_DB_SHORT_LIVED_SESSIONS``        :setting:`sqlalchemy_short_lived_sessions`
+``CELERY_RESULT_DB_TABLE_NAMES``       :setting:`sqlalchemy_db_names`
+``CELERY_ACKS_LATE``                   :setting:`task_acks_late`
+``CELERY_ALWAYS_EAGER``                :setting:`task_always_eager`
+``CELERY_ANNOTATIONS``                 :setting:`task_annotations`
+``CELERY_MESSAGE_COMPRESSION``         :setting:`task_compression`
+``CELERY_CREATE_MISSING_QUEUES``       :setting:`task_create_missing_queues`
+``CELERY_DEFAULT_DELIVERY_MODE``       :setting:`task_default_delivery_mode`
+``CELERY_DEFAULT_EXCHANGE``            :setting:`task_default_exchange`
+``CELERY_DEFAULT_EXCHANGE_TYPE``       :setting:`task_default_exchange_type`
+``CELERY_DEFAULT_QUEUE``               :setting:`task_default_queue`
+``CELERY_DEFAULT_RATE_LIMIT``          :setting:`task_default_rate_limit`
+``CELERY_DEFAULT_ROUTING_KEY``         :setting:`task_default_routing_key`
+``-"-_EAGER_PROPAGATES_EXCEPTIONS``    :setting:`task_eager_propagates`
+``CELERY_IGNORE_RESULT``               :setting:`task_ignore_result`
+``CELERY_TASK_PUBLISH_RETRY``          :setting:`task_publish_retry`
+``CELERY_TASK_PUBLISH_RETRY_POLICY``   :setting:`task_publish_retry_policy`
+``CELERY_QUEUES``                      :setting:`task_queues`
+``CELERY_ROUTES``                      :setting:`task_routes`
+``CELERY_SEND_TASK_ERROR_EMAILS``      :setting:`task_send_error_emails`
+``CELERY_SEND_TASK_SENT_EVENT``        :setting:`task_send_sent_event`
+``CELERY_TASK_SERIALIZER``             :setting:`task_serializer`
+``CELERYD_TASK_SOFT_TIME_LIMIT``       :setting:`task_soft_time_limit`
+``CELERYD_TASK_TIME_LIMIT``            :setting:`task_time_limit`
+``CELERY_TRACK_STARTED``               :setting:`task_track_started`
+``CELERY_DISABLE_RATE_LIMITS``         :setting:`worker_disable_rate_limits`
+``CELERY_ENABLE_REMOTE_CONTROL``       :setting:`worker_enable_remote_control`
+``CELERYD_SEND_EVENTS``                :setting:`worker_send_task_events`
+=====================================  ==========================================================
+
+You can see a full table of the changes in :ref:`conf-old-settings-map`.
+
 Django: Autodiscover no longer takes arguments.
 -----------------------------------------------
 
+Celery's Django support will instead automatically find your installed apps,
+which means app configurations will work.
+
 # e436454d02dcbba4f4410868ad109c54047c2c15
 
 Old command-line programs removed