【问题标题】:Using Celery and Redis with my Django application在我的 Django 应用程序中使用 Celery 和 Redis
【发布时间】:2019-07-26 22:14:34
【问题描述】:

我想根据CeleryRedis 用我的Django 应用程序提出问题。 正如我将进一步详细解释的那样,我在这些应用程序中遇到了一些随机问题。

我的环境:

我正在使用:

  • Django 1.11.20
  • django-redis 4.7.0 / redis >= 2.10.5
  • 芹菜 4.2.1

我的本地环境:(Ubuntu 虚拟机)

我有一个 celery 任务,当这个文件大于 70.000 个对象时,它会发送一封带有导出文件的电子邮件。该过程运行良好,我收到了预期的电子邮件,其中包含下载我的文件的链接。

Celery 手动启动celery -A main worker -l info

我的开发环境:(FreeBSD 服务器)

我有完全相同的过程。但是芹菜在我的服务器上被守护了。我可以使用以下方式执行 celery 服务:service celeryd_app start

当我启动我的 celery 任务时,有时我需要点击几次按钮才能看到:

Received task: app.tasks.get_xls_export[64d31ba5-73d9-4048-b19a-a4902fd904d7]

但我遇到的主要问题是:我的任务发送一封电子邮件,其中包含位于/templates/email/email.html 的特定电子邮件模板。

有时它会发送此电子邮件模板,有时它会发送我的项目中不存在的旧模板。

我的问题:

Celery/Redis 是否有可能在内存中保存了一个旧模板?有没有办法为我的特定服务清理缓存?因为根据其他应用,我的服务器上还有其他 celery 服务。

非常感谢!

【问题讨论】:

    标签: django redis celery django-celery celeryd


    【解决方案1】:

    如果你想clear the pending tasks,看起来你有待处理的任务

    你可以这样做

    from main.celery import app
    app.control.purge()
    

    或者你可以celery -A main purge

    如果你想丢弃特定队列的任务,你可以这样做

    celery amqp queue.purge <queue name>

    【讨论】:

    • 我试过app.control.purge(),但它似乎对我的任务没有任何影响。看起来有一个旧模板存储在某个地方(redis 或 celery)..
    猜你喜欢
    • 2021-08-20
    • 1970-01-01
    • 2020-04-29
    • 2019-12-08
    • 2021-04-08
    • 2017-01-25
    • 2014-07-18
    • 2019-09-30
    • 2018-05-03
    相关资源
    最近更新 更多