如何对网络爬虫运行每日自动测试?



我维护着一个用Django REST构建的REST API,它在内部抓取几个网页来检索一堆信息。

我对每个端点都进行了测试,以检查刮板是否仍在工作。他们实际上与页面连接并检查来源是否保持不变,并且基本上一切正常。

我想每天运行几次这些测试,并在这些刮刀中的任何一个失败时收到通知。我不确定我应该如何处理这个问题。

我正在寻找一种方法,可以让我:

  1. 每 X 小时自动运行一次测试
  2. 通知我结果

我一直在研究CI,但我不确定这是否是这里更可取的方法。

如果你已经有一个脚本来进行测试并通知你(例如通过电子邮件或Pushover,Python中的实现不是太难(,设置一个cron作业:

打开终端并键入crontab -e,如果系统询问,请选择您的编辑器并添加以下行:

* */X    * * *   python /path/to/testscript.py

其中 X 应替换为您想要测试的频率。例如,如果您编写 3 而不是 X,则每 3 小时将执行一次脚本。

你可以试试 django-crontab。

  • 易于配置。
  • 管理相应应用目录中的 crons。
  • 可通过settings模块进行配置。
  • manage.py集成,可轻松添加、删除和显示 crons。

注意:适用于 Django>=1.8


编辑

示例配置和用法

  • 通过pip安装:pip install django-crontab
  • settings模块中添加INSTALLED_APPS
    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

请参阅此处的其他配置选项。

最新更新