让用户创建芹菜周期性任务



我想问您有关django应用中芹菜和重新使用情况的信息。我正在学习芹菜大约两天的时间,但我仍然有些困惑:/我已经安装了芹菜和雷迪斯,而且工作正常。我的问题是,我希望用户创建,更新和暂停定期任务。我已经阅读了这篇文章-http://kindshofer.net/2016/11/11/11/11/dynamally_adding_a_a_periodic_task_task_to_celery.html和这个问题 - 如何动态添加/删除定期任务像这两个一样有用,而且我需要使用django-celery。我以为这是一个不错的选择,但是我读过(> https://github.com/celery/django-celery),django-celery使用django result backend(这意味着 - 我的db,my db,,rigth?我想使用redis!)。是否可以与Redis一起使用Django-Celery?也许使用Django-Celery,我不需要使用redis?也许还有其他一些让用户创建定期任务的方法?我确实需要定期的任务快速轻量级,因为其中会有很多,而且它们需要完美无瑕(这就是为什么我认为我需要将它们推到其他地方的原因)。我真的很感谢任何建议!

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

在芹菜问题上:结果后端仅存储结果。它不处理队列。但是即使那样,您也可以将结果发送到Redis:

CELERY_RESULT_BACKEND = 'django-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使用ORM来更容易地完成/与密钥/值存储在Python中进行排序/汇总。

我认为您正在造成一些混乱...芹菜需要重新装置作为消息经纪人,并且这2件事必须在您的系统中安装。您安装(最佳选择是在您的虚拟环境中)django_celery_beat,用于使用crontab和django_celery_results定期任务,以便使用django存储芹菜任务...

当然,可以使用户启动并制作自定义的周期性任务。.您(在模板中,带有表单)可以获取用户输入,在您的视图中,请输入该输入并将其传递给函数在您的tasks.py文件上..在您的任务上。

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

最新更新