【问题标题】:Let user create celery periodic tasks让用户创建 celery 周期性任务
【发布时间】:2018-02-28 09:57:09
【问题描述】:

想请教一下 celery 和 redis 在 django app 中的使用。我正在学习 celery 大约 2 天,但我仍然有点困惑:/ 我已经安装了 celery 和 redis,它工作得很好。我的问题是,我希望用户创建、更新和暂停定期任务。我已经阅读了这篇文章 - http://kindshofer.net/2016/11/19/dynamically_adding_a_periodic_task_to_celery.html 和这个问题 - How to dynamically add / remove periodic tasks to Celery (celerybeat) 其他文章,但没有这两篇文章有用),看来我需要使用 django-celery。我想,这是一个不错的选择,但后来我读到(这里 --> https://github.com/celery/django-celery ),django-celery 使用 django 结果后端(这意味着 - 我的数据库,对吗?我想使用 redis!) .是否可以将 django-celery 与 redis 一起使用?也许使用 django-celery 我不需要使用 redis?也许还有其他方法可以让用户创建周期性任务?我真的需要我的周期性任务快速而轻量,因为它们会很多而且它们需要完美无瑕(这就是为什么我认为我需要将它们推到其他地方)。 我真的很感激任何建议!

【问题讨论】:

    标签: django redis celery django-celery periodic-task


    【解决方案1】:

    我认为您有些困惑... Celery 需要 Redit 服务器作为消息代理,并且必须在您的系统中全局安装这两个东西。为了将这两个工具与您安装的 django 集成(最好的选择是在您的虚拟环境中)django_celery_beat 用于使用 crontab 和 django_celery_results 的定期任务,以便使用 Django 存储 Celery 任务...

    当然,可以让用户启动并执行自定义的周期性任务。您可以(在您的模板中,使用表单)获取用户输入,并在您的视图中获取该输入并将其传递给函数在您的 tasks.py 文件上。在您的 tasks.py 上,您可以创建一个执行任务的函数!

    本指南非常有用: https://github.com/codingforentrepreneurs/Guides/blob/master/all/Celery_Redis_with_Django.md

    【讨论】:

      【解决方案2】:

      快速、轻量级和 redis == Python RQ。但是,暂停工作可能是个问题。

      关于 Celery 问题:结果后端只存储结果。它不处理队列。但即便如此,您也可以将结果发送到 Redis:

      CELERY_RESULT_BACKEND = 'django-cache'
      

      配置cache

      CACHES = {
          "default": {
              "BACKEND": "django_redis.cache.RedisCache",
              "LOCATION": "redis://127.0.0.1:6379/1",
              "OPTIONS": {
                  "CLIENT_CLASS": "django_redis.client.DefaultClient",
              }
          }
      }
      

      但是 - 使用 django-db 后端的原因是可以在结果上创建查询集。这通常更有用,因为结果显示在视图中,而作业通常不显示。能够聚合结果(如平均作业执行时间)并创建图表,这在 Django 中非常有用,并且使用 ORM 更容易完成,然后在 python 中使用键/值存储自行排序/聚合这些东西。

      【讨论】:

        猜你喜欢
        • 2018-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-30
        • 2018-08-03
        • 1970-01-01
        • 2017-06-15
        • 2019-02-16
        相关资源
        最近更新 更多