我维护了一个使用Django REST构建的REST API,该API在内部刮取了多个网页以检索一堆信息。
我对每个端点进行测试,以检查刮板是否仍在工作。他们实际上与页面连接,并检查来源是否保持不变,并且基本上一切都还好。
我想每天运行几次这些测试,并在这些刮板中的任何一个发生故障时得到通知。我不确定该如何处理。
我正在寻找一种允许我进行以下操作的方法:
我一直在研究CI,但是我不确定这是否是首选方法。
答案 0 :(得分:0)
如果您已经有了脚本,它将进行测试并通知您(例如,通过电子邮件或Pushover,Python的实现不太难),请设置cron作业:
打开一个终端并输入crontab -e
,如果要求您选择编辑器并添加以下行:
* */X * * * python /path/to/testscript.py
其中X应替换为您要测试的频率。例如,如果您写3而不是X,则每3个小时将执行一次脚本。
答案 1 :(得分:0)
您可以尝试django-crontab。
settings
模块进行配置。manage.py
集成在一起,可以轻松地添加,删除和显示分支。 注意:适用于Django> = 1.8
编辑
示例配置和用法:
pip
安装:pip install django-crontab
INSTALLED_APPS
模块中添加settings
。INSTALLED_APPS = (
'django_crontab',
...
)
crons.py
的模块(您可以命名为任意名称)。 crons.py(示例路径/path/to/project/<app_name>/crons.py
):
from .models import FooModel
def foo_scheduler():
# update Foo's bar on each invocation
foos = FooModel.objects.all()
for foo in foos:
foo.bar += 42
foo.save()
settings
中注册cron。settings.py :
...
CRONJOBS = (
# this will recur every 5 mins
('*/5 * * * *', '<app_name>.crons.foo_scheduler'),
)
...
python manage.py crontab add
添加到crontab中。 python manage.py crontab remove
删除。python manage.py crontab show
。