【问题标题】:Unable to make a function call using Django-cron无法使用 Django-cron 进行函数调用
【发布时间】:2020-11-03 04:26:37
【问题描述】:

我想每周调用一次方法,为此我按照此处所述进行了实现

https://gutsytechster.wordpress.com/2019/06/24/how-to-setup-a-cron-job-in-django/

我不确定它是如何工作的,但让我解释一下我做了什么。我需要调用下面文件夹结构中提到的方法。

proj_application
|
|- myapp
       |
       |-views.py (Method call Inside)
                |- poll_tracked()

在views.py中,

def poll_tracked():
    print('called')

在settings.py中,我已经提到了

INSTALLED_APPS = [
'django_crontab',
]

CRONJOBS = [
    ('* * * * *', 'myapp.views.poll_tracked', '>>' + os.path.join(BASE_DIR, 'data.log'))
]

然后我跑

python3.7 manage.py crontab add
python3.7 manage.py runserver

当我运行 crontab -l 时,我可以看到,

* * * * * /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7 /Users/domain/dashboard/proj_application/manage.py crontab run dceca84af9ceab8a4d39d08fa148969f >>/Users/domain/dashboard/proj_application/data.log # django-cronjobs for proj_application

生成了一个名为 data.log 的新日志文件,但提到的方法 poll_tracked() 未调用,并且日志为空。

以前有人遇到过这个问题吗?如果是这样,任何帮助表示赞赏。谢谢。

【问题讨论】:

  • 这与您遇到的错误无关,但是通过获得所有 5 颗星,您将每分钟运行一次 cron 作业,确保将其更改为 ' * * * * 1'让它每周运行一次
  • @figbar yaa 我会这样做,但首先我需要弄清楚为什么不调用该方法,如果我每分钟运行一次。如果你能帮我解决这个问题,下一步将如你所说:)

标签: python python-3.x django django-cron


【解决方案1】:

也许只是尝试在末尾添加2>&1,它将错误输出重定向到标准输出,并可能解释为什么您的日志文件为空。你在>>之后也少了一个空格

CRONJOBS = [
    ('* * * * *', 'myapp.views.poll_tracked', '>> ' + os.path.join(BASE_DIR, 'data.log') + ' 2>&1')
]

【讨论】:

  • FileNotFoundError: [Errno 2] 没有这样的文件或目录:'config.json'。这是我现在在 data.log 中得到的日志。 config.json 是一个位于 myapp 文件夹之外的文件,我在 myapp 内的一个 .py 文件中使用了它。在 CRONJOBS 中,我提到路径为“myapp.views.poll_tracked”,所以我认为,它在 myapp 中搜索 config.json 并出现找不到文件。
  • 是否曾经在 poll_tracked() 函数中访问过 config.json,或者只是在 python 文件中的其他函数中访问过,而这些函数没有被 cron 作业执行?
  • 在另一个python文件中的其他函数中访问它(甚至在views.py中也没有),这些函数没有被cron作业执行。
  • 如果你在 shell 中单独执行函数会发生什么。 (比如进入 python shell,导入 myapp,然后运行 ​​poll_tracked)。它会产生正确的输出吗?
  • 我无法在 python 控制台 @figbar 中导入 views.py。我想我在某个地方弄乱了路径,但不确定在哪里,让我弄清楚并返回。
猜你喜欢
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
  • 2019-03-21
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
  • 2016-12-04
  • 1970-01-01
相关资源
最近更新 更多