python - 芹菜节拍时间表运行不准确
问题描述
Celery 不规律地运行这些任务。它执行 10 个任务然后卡住,有时卡住很长时间。该任务仅打印一个字符串。这没有理由挂起。
芹菜.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
任务.py
@app.task
def push():
print("ice")
hc = HealthCheckIKEV2()
hc.report()
健康检查IKEV2.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
这种偶尔的延迟是否可以解释为redis数据库不在本地主机上,而是位于远程?即使在内部 60 秒时也会发生偶尔的延迟。
celery -A notify beat -l info
celery -A notify worker -l info
解决方案
推荐阅读
- java - 使用迭代器模式的最佳数组类型
- maven - 安装多模块maven项目
- python - 使用 openpyxl 格式化 Excel
- node.js - 找不到处理程序引用的静态文件:build/index.html -Bitbucket Pipeline React App Engine
- node.js - Heroku 无法绑定 PORT
- c++ - 反转数字中字节顺序的标准方法
- css - 将嵌套的无序列表对齐到另一个无序列表并对齐到左侧
- python - 无法将多个参数传递给 odeint 求解器
- ios - 如何在 SwiftUI 中调整 navigationBarTitle 和 Label Text 对齐方式
- visual-studio-code - 保存文件时找不到注册的语言