【问题标题】:Celery beat (Redbeat) on heroku : logs not showingHeroku 上的 Celery beat(Redbeat):日志未显示
【发布时间】:2021-05-06 02:34:53
【问题描述】:

我有一个 Django 应用程序,它在 Celery 上运行定期任务。

过程文件

worker: celery -A myproject worker --loglevel=INFO
beat : celery -A myproject beat --scheduler redbeat.RedBeatScheduler

我已尝试使用 RedBeatScheduler 和 django_celery_beat.scheduler:DatabaseScheduler,结果相同。

settings.py

...
CELERY_BROKER_URL = os.environ.get("REDIS_URL") or 'redis://localhost:6379/0'
CELERY_BACKEND_URL = os.environ.get("REDIS_URL") or 'redis://localhost:6379/1'
CELERY_RESULT_BACKEND = os.environ.get("REDIS_URL") or 'redis://localhost:6379/0'
CELERY_REDBEAT_REDIS_URL = os.environ.get("REDIS_URL") or "redis://localhost:6379/1"

celery.py

...
app = Celery("myproject")
app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks()

app.conf.beat_schedule = {
    'chord_scraping_00': {
    'task': 'myapp.tasks.chord_scraping',
    'schedule': crontab(minute="0-8"),
    'args': ("00",),
    }
}

在本地,一切正常。 但是当我将它部署到 Heroku 时,我没有看到任何使用 heroku logs --tail 的日志

我确实反复收到此日志: app[heroku-redis]: source=REDIS addon=redis-rugged-87179 sample#active-connections=6 sample#load-avg-1m=0.335 sample#load-avg-5m=0.23 sample#load-avg-15m=0.23 sample#read-iops=0 sample#write-iops=0.15417 sample#memory-total=15629036kB sample#memory-free=6105444kB sample#memory-cached=4767492kB sample#memory-redis=434704bytes sample#hit-rate=0.39511 sample#evicted-keys=0

但是没有我所期望的日志app[beat]。在本地,我进入了 Celery 的日志:

INFO/MainProcess] Received task: myapp.tasks.chord_scraping[932eba58-102d-4db2-a274-722200a76d45]

周期性任务是否启动?如果不在日志尾部,日志应该出现在哪里?

【问题讨论】:

    标签: heroku celery django-celery celerybeat


    【解决方案1】:

    为了确保你的工作效率和测试目的,我建议你每 2 或 3 分钟吃一次午餐crontab(minute='*/3')

    查看工作日志:

    在 herokuapp 管理员中签出您的应用,然后:

    1. 在更多选择下:View logs

    1. All Processes下选择工人

    【讨论】:

      最近更新 更多