Django-Celery正在制作中?

时间:2017-02-14 06:01:38

标签: django celery django-celery

所以我一直试图弄清楚如何进行预定任务,我找到了Celery,并且能够完成简单的预定任务。为此,我需要打开一个命令行并运行celery -A proj beat来完成任务。这在开发环境中工作正常,但是当将其投入生产时将是一个问题。

那么如何在没有使用命令行的情况下让芹菜工作?当我的生产服务器在线时,如何确保我的调度程序能够满足它?芹菜可以做到这一点,还是我需要采用另一种方法?

1 个答案:

答案 0 :(得分:3)

我们在生产环境中使用Celery,恰好在Heroku上。我们正在迁移到AWS。在这两种环境中,Celery都很好地哼着。

了解您的生产环境将会是什么样子会很有帮助。我有点担心为什么你会担心关掉你的电脑,因为使用Django意味着你正在运行一个网站服务......你是从笔记本电脑上为你的网站服务吗?

无论如何,假设您要从云平台运行生产服务器,您所要做的就是发送运行Django所需的任何命令行和Celery的命令行(正如您在问题中已经注意到的那样) )。

在配置方面,您说您有“预定”任务,这意味着您已在config.py文件中设置了节拍时间表。如果没有,它应该看起来像这样(假设你有一个名为tasks.py的模块,它保存你的芹菜任务定义:

from celery.schedules import crontab

beat_schedule = {
    'task1': {
        'task': 'tasks.task_one',
        'schedule': 3600
    },
    'task2': {
        'task': 'tibController.tasks.update_old_retail',
        'schedule': crontab(hour=12, minute=0, day_of_week='mon-fri'
    }
}

然后在您的tasks.py中调用配置文件,您只需执行此操作:

from celery import Celery
import config

app = Celery('tasks')
app.config_from_object(config)

您可以在docs中找到有关crontab的更多信息。您也可以查看此repo以获取简单的Celery示例。

总结:

  1. 创建一个配置文件,用于标识
  2. 时要运行的任务
  3. 将配置文件加载到Celery应用程序
  4. 获取运行代码的云平台。
  5. 完全按照您已经确定的方式运行芹菜
  6. 希望有所帮助。