【问题标题】:Python django django-crontab only runs once. How can I test it running the expected every minute?Python django django-crontab 只运行一次。我如何测试它每分钟运行一次?
【发布时间】:2020-12-20 08:03:35
【问题描述】:

我已将django-crontab 安装到python 虚拟环境中。我每天都在尝试向 Google 工作表添加一行,我知道该功能有效,所以我只需要一个 cron 作业来触发它。

python 3.6.7
django 2.0.9
django-crontab 7.0.1

下面是我的文件夹结构:

├── api
│   ├── utils
│   |    └── cron.py
|---manage.py

这是我的 cron.py

# For Google API to sheets
import pygsheets

# The ID of spreadsheet.
SPREADSHEET_ID = 'abc123'

def addToGraphs():
    # Use service credentials 
    print('Attempt CRON')
    gs = pygsheets.authorize(service_account_file='credentials.json')
    spreadsheet = gs.open_by_key(SPREADSHEET_ID)
    graphsWorksheet = spreadsheet.worksheet_by_title('Graphs')
    graphsWorksheet.append_table(["29/12/2020", 1, 2, 3])
    return True

在我的 settings.py 中,我像这样添加了 CRONJOBS:

CRONJOBS = [
    ('*/1 * * * *', 'utils.cron.addToGraphs')
]

使用文档说的命令,我似乎正确地添加了 cron 使用: python manage.py crontab add .

然后能够使用以下方法正确列出: python manage.py crontab show

当我在本地运行它时: python manage.py crontab run {taskId}

该函数确实打印出“Attempt CRON”并将该行添加到 Google 工作表中,耶!但只有一次……然后就结束了。

当我启动 python django 服务器时: python manage.py runserver

我没有收到任何打印声明,Google 文档也没有更新。

我错过了什么?我觉得我很接近,因为当我手动运行它时它可以工作。感谢您的任何建议,谢谢!

【问题讨论】:

  • 在设置文件的末尾写入 CRONJOBS 以及它的 python manage.py crontab 最后添加不带点。
  • CRONJOBS 位于设置文件的末尾,我尝试添加不带点的 cron。结果相同
  • 尝试在 CRONJOBS 中添加完整路径可能会帮助您喜欢 api.utils.cron.addToGraphs
  • 当我输入完整路径时我们找不到模块:“ModuleNotFoundError: No module named 'api'”

标签: python django cron


【解决方案1】:

相对路径不起作用我必须将我的 credentials.json 文件的路径更新为绝对路径。 我变了: credentails.json/Users/Matt/Documents/Project/Backend/api/credentials.json

【讨论】:

    猜你喜欢
    • 2013-10-30
    • 2020-12-19
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 2019-11-04
    • 1970-01-01
    相关资源
    最近更新 更多