【发布时间】: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'”