【问题标题】:Is there any another way to python manage.py crontab run in django server?python manage.py crontab 在 django 服务器中运行还有其他方法吗?
【发布时间】:2021-08-02 03:38:47
【问题描述】:

我已经使用 django_crontab 包在 django 中创建了一个计划作业。我已经添加了这份工作。它已成功添加,但只有在我运行 python manage.py crontab run daeea9e88c171494b1610bdebfasd123 时才会执行,而不是使用 runserver 命令。可能是什么问题,这是我的看法。

cron.py 文件

def my_scheduled_job():
    file = open('geek.txt','w')
    now = timezone.now()
    file.write("This is the write command")
    file.write("It allows us to write in a particular file")
    file.write(str(now))
    file.close()
    print(now)
    return True

settings.py

CRONTAB_LOCK_JOBS = False
CRONTAB_DJANGO_PROJECT_NAME = 'api' 
CRONTAB_DJANGO_SETTINGS_MODULE = 'api.settings'
CRONJOBS = [
    ('*/1 * * * *', 'app.cron.my_scheduled_job')
]

我想要的是它的工作在我运行 python manage.py runserver 时每分钟执行一次。有什么遗漏的请帮帮我。

【问题讨论】:

  • 您的意思是您没有看到打印件吗?我认为它不会显示在您所在的任何终端上。尝试检查文件是否每分钟更新一次
  • 是的,我检查了文件,我正在为此保留一个文件。仅当我调用 python manage.py crontab run 时文件才会更新。不在 runserver 上。
  • 无论你是否使用 runserver,它都应该每分钟运行一次,因为 cron 会为你运行它。只是为了确认一下,您使用的是什么操作系统?
  • 我使用的是 Ubuntu 20.04。
  • 你确实运行了python manage.py crontab add 对吗?尝试查看您的 cron 作业是否已添加到您的 crontab 中。检查this 如何。如果它在那里,即使没有runservercrontab run,该作业也会每分钟运行一次

标签: python django django-cron django-crontab


【解决方案1】:

我也有同样的问题,现在已经解决了。 我只需要在 .env 文件中设置我的用户环境变量,问题就解决了。

我的虚拟环境路径:/home/nasir/Work//dj_venv/bin/python3.8

我的 cronjob 运行路径: 路径/home/nasir/Work/django_projects_neosoft/e_commerce/manage.py crontab 运行 6ef9e6b4bdce09989e8ed084d2ffc2bb

我的完整路径(对于我的系统): /home/nasir/Work/django_projects_neosoft/dj_venv/bin/python3.8 /home/nasir/Work/django_projects_neosoft/e_commerce/manage.py crontab 运行 6ef9e6b4bdce09989e8ed084d2ffc2bb

我将完整路径粘贴到终端并得到与数据库和环境变量相关的错误我在 .env 文件中设置环境变量并且问题已修复。 cronjob 现在工作正常。

在你的情况下,你可能会遇到一些其他错误,尝试解决它,至少你知道问题出在哪里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    相关资源
    最近更新 更多