Celery runs these tasks erratically. It executes 10 tasks and then it gets stuck, sometimes for a long time. The task only prints a string. There is no reason why this should hang.
celery.py:
from celery import Celery
app = Celery("notify", include=["notify.tasks"])
app.config_from_object("notify.celery_config")
app.conf.beat_schedule = {
"run-push-every-second": {"task": "notify.tasks.push", "schedule": 1.0}
}
celery_config.py
settings = get_settings()
broker_url = "redis://default:{0}@{1}:{2}/1".format(
quote(settings.REDIS_PASSWORD, safe=""),
settings.REDIS_IP,
settings.REDIS_PORT,
)
task_serializer = "json"
result_serializer = "json"
accept_content = ["json"]
timezone = "Europe/Dublin"
enable_utc = True
tasks.py
@app.task
def push():
print("ice")
hc = HealthCheckIKEV2()
hc.report()
HealthCheckIKEV2.py
class HealthCheckIKEV2:
def report(self):
print("nice")
[2021-06-13 17:16:01,485: WARNING/ForkPoolWorker-1] nice
[2021-06-13 17:16:01,485: INFO/ForkPoolWorker-1] Task notify.tasks.push[614503e3-ba64-4ff7-b0c0-34fdd6b6730e] succeeded in 0.0003884739999193698s: None
[2021-06-13 17:16:02,486: WARNING/ForkPoolWorker-1] ice
[2021-06-13 17:16:02,486: WARNING/ForkPoolWorker-1] nice
[2021-06-13 17:16:02,486: INFO/ForkPoolWorker-1] Task notify.tasks.push[a7155eda-ba72-46f8-8055-b95436ba704e] succeeded in 0.0003731990000233054s: None
[2021-06-13 17:16:15,491: WARNING/ForkPoolWorker-1] ice
[2021-06-13 17:16:15,491: WARNING/ForkPoolWorker-1] nice
[2021-06-13 17:16:15,491: INFO/ForkPoolWorker-1] Task notify.tasks.push[444892aa-dd50-4de4-be2b-1bec47d3fd1f] succeeded in 0.0004693000000770553s: None
[2021-06-13 17:16:16,490: WARNING/ForkPoolWorker-1] ice
[2021-06-13 17:16:16,490: WARNING/ForkPoolWorker-1] nice
[2021-06-13 17:16:16,490: INFO/ForkPoolWorker-1] Task notify.tasks.push[8910ee16-35c9-4051-8464-22d0a6c3aa1f] succeeded in 0.0003766750000977481s: None
Could this occasional delay be explained that the redis database is not on localhost, but is located remotely? The occasional delay happens even at 60 seconds internal.
celery -A notify beat -l info
celery -A notify worker -l info