It also looks as if nova was getting this right: [root@overcloud-controller-1 ~]# grep periodic_task /usr/lib/python2.7/site-packages/nova* -R /usr/lib/python2.7/site-packages/nova/manager.py:from oslo_service import periodic_task /usr/lib/python2.7/site-packages/nova/manager.py:class PeriodicTasks(periodic_task.PeriodicTasks): /usr/lib/python2.7/site-packages/nova/manager.py: def periodic_tasks(self, context, raise_on_error=False): /usr/lib/python2.7/site-packages/nova/manager.py: return self.run_periodic_tasks(context, raise_on_error=raise_on_error) /usr/lib/python2.7/site-packages/nova/cells/manager.py:from oslo_service import periodic_task /usr/lib/python2.7/site-packages/nova/cells/manager.py: @periodic_task.periodic_task /usr/lib/python2.7/site-packages/nova/cells/manager.py: @periodic_task.periodic_task Binary file /usr/lib/python2.7/site-packages/nova/cells/manager.pyo matches Binary file /usr/lib/python2.7/site-packages/nova/cells/manager.pyc matches Binary file /usr/lib/python2.7/site-packages/nova/service.pyo matches Binary file /usr/lib/python2.7/site-packages/nova/manager.pyo matches Binary file /usr/lib/python2.7/site-packages/nova/service.pyc matches Binary file /usr/lib/python2.7/site-packages/nova/scheduler/driver.pyo matches /usr/lib/python2.7/site-packages/nova/scheduler/manager.py:from oslo_service import periodic_task /usr/lib/python2.7/site-packages/nova/scheduler/manager.py: @periodic_task.periodic_task /usr/lib/python2.7/site-packages/nova/scheduler/manager.py: @periodic_task.periodic_task(spacing=CONF.scheduler_driver_task_period, /usr/lib/python2.7/site-packages/nova/scheduler/manager.py: def _run_periodic_tasks(self, context): /usr/lib/python2.7/site-packages/nova/scheduler/manager.py: self.driver.run_periodic_tasks(context) Binary file /usr/lib/python2.7/site-packages/nova/scheduler/caching_scheduler.pyo matches /usr/lib/python2.7/site-packages/nova/scheduler/caching_scheduler.py: def run_periodic_tasks(self, context): Binary file /usr/lib/python2.7/site-packages/nova/scheduler/manager.pyo matches Binary file /usr/lib/python2.7/site-packages/nova/scheduler/driver.pyc matches /usr/lib/python2.7/site-packages/nova/scheduler/driver.py: def run_periodic_tasks(self, context): Binary file /usr/lib/python2.7/site-packages/nova/scheduler/caching_scheduler.pyc matches Binary file /usr/lib/python2.7/site-packages/nova/scheduler/manager.pyc matches /usr/lib/python2.7/site-packages/nova/rpc.py:from oslo_service import periodic_task /usr/lib/python2.7/site-packages/nova/rpc.py:class ClientRouter(periodic_task.PeriodicTasks): /usr/lib/python2.7/site-packages/nova/rpc.py: self.run_periodic_tasks(nova.context.RequestContext(overwrite=False)) /usr/lib/python2.7/site-packages/nova/rpc.py: @periodic_task.periodic_task Binary file /usr/lib/python2.7/site-packages/nova/rpc.pyo matches /usr/lib/python2.7/site-packages/nova/compute/manager.py:from oslo_service import periodic_task /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task(spacing=CONF.scheduler_instance_sync_interval) /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task( /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task(spacing=CONF.shelved_poll_interval) /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task(spacing=CONF.bandwidth_poll_interval) /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task(spacing=CONF.volume_usage_poll_interval) /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task(spacing=CONF.sync_power_state_interval, /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task(spacing=CONF.update_resources_interval) /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task( /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task(spacing=CONF.image_cache_manager_interval, /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task(spacing=CONF.instance_delete_interval) /usr/lib/python2.7/site-packages/nova/compute/manager.py: @periodic_task.periodic_task(spacing=CONF.instance_delete_interval) Binary file /usr/lib/python2.7/site-packages/nova/compute/manager.pyo matches Binary file /usr/lib/python2.7/site-packages/nova/compute/manager.pyc matches /usr/lib/python2.7/site-packages/nova/service.py: self.tg.add_dynamic_timer(self.periodic_tasks, /usr/lib/python2.7/site-packages/nova/service.py: def periodic_tasks(self, raise_on_error=False): /usr/lib/python2.7/site-packages/nova/service.py: return self.manager.periodic_tasks(ctxt, raise_on_error=raise_on_error) Binary file /usr/lib/python2.7/site-packages/nova/rpc.pyc matches /usr/lib/python2.7/site-packages/nova/network/manager.py:from oslo_service import periodic_task /usr/lib/python2.7/site-packages/nova/network/manager.py: @periodic_task.periodic_task /usr/lib/python2.7/site-packages/nova/network/manager.py: @periodic_task.periodic_task( Binary file /usr/lib/python2.7/site-packages/nova/network/manager.pyo matches Binary file /usr/lib/python2.7/site-packages/nova/network/manager.pyc matches Binary file /usr/lib/python2.7/site-packages/nova/manager.pyc matches