繁体   English   中英

"如何每天自动运行带有 Python 代码的 Jupyter Notebook?"

[英]How to run a Jupyter notebook with Python code automatically on a daily basis?

我在 Jupyter 笔记本中有一些 Python 代码,我需要每天自动运行它,所以我想知道是否有办法设置它。 我非常感谢您对此的任何建议。

"

更新
最近我遇到了用于执行和参数化笔记本的造纸厂。

https://github.com/interact/papermill

papermill local/input.ipynb s3://bkt/output.ipynb -p alpha 0.6 -p l1_ratio 0.1

这似乎比 nbconvert 更好,因为您可以使用参数。 您仍然必须使用调度程序触发此命令。 下面是一个在 Ubuntu 上使用 cron 的例子。


旧答案

nbconvert --execute

可以执行 jupyter notebook,这嵌入到 cronjob 中会做你想做的。

Ubuntu 上的示例设置:

使用以下内容创建yourscript.sh

/opt/anaconda/envs/yourenv/bin/jupyter nbconvert \
                      --execute \
                      --to notebook /path/to/yournotebook.ipynb \
                      --output /path/to/yournotebook-output.ipynb

除了 --to notebook 之外,您还有更多选择。 我喜欢这个选项,因为之后你有一个完全可执行的“日志”文件。

我建议使用虚拟环境来运行您的笔记本,以避免将来的更新与您的脚本混淆。 不要忘记将 nbconvert 安装到环境中。

现在通过在终端中输入crontab -e并添加以下行来创建一个每天运行的 cronjob,例如在早上 5:10 运行:

10 5 * * * /path/to/yourscript.sh

如果你想有更高的质量,最好结合气流。 我将它们打包在一个 docker 镜像中, https://github.com/michaelchanwahyan/datalab

它是通过修改一个开源包 nbparameterize 并集成诸如 execution_date 的传递参数来完成的。 图形可以即时生成输出可以更新并保存在笔记本内。

执行时

  • 将读取笔记本并注入参数
  • 笔记本被执行,输出将覆盖原始路径

此外还安装配置了spark、keras、tensorflow等常用工具。

试试SeekWell Chrome 扩展 它允许您直接从 Jupyter Notebooks 安排笔记本每周、每天、每小时或每 5 分钟运行一次。 如果愿意,您还可以将 DataFrame 直接发送到 Sheets 或 Slack。

这是一个演示视频,上面的 Chrome 网上应用店链接中还有更多信息。

**披露:我是 SeekWell 的联合创始人

你可以在 cronjob 中添加 jupyter notebook

0 * * * * /home/ec2-user/anaconda3/bin/python /home/ec2-user/anaconda3/bin/jupyter-notebook

您必须将 /home/ec2-user/anaconda3 替换为您的 anaconda 安装位置,并且您可以在 cron 中根据您的要求安排时间

使用Papermill可以方便地使用参数执行 Jupyter 笔记本。 我还发现将笔记本作为 Markdown 文件或带有Jupytext的 Python 脚本共享/版本控制很方便。 然后我使用nbconvert将笔记本转换为 HTML 文件。 通常,我的工作流程如下所示:

cat world_facts.md \
| jupytext --from md --to ipynb --set-kernel - \
| papermill -p year 2017 \
| jupyter nbconvert --no-input --stdin --output world_facts_2017_report.html

了解有关上述内容的更多信息,包括如何指定笔记本运行的 Python 环境,以及如何在笔记本上使用持续集成,请查看我的文章使用 Jupyter Notebooks(使用 Jupytext 和 Papermill)自动报告可以在MediumGitHubBinder 上阅读 如果您想以交互方式测试文章中命令的结果,请使用 Binder 链接。

正如其他人所说,造纸厂是必经之路。 Papermill 只是具有一些额外功能的nbconvert

如果您想处理相互依赖的多个笔记本的工作流程,您可以尝试Airflow 与 papermill 的集成 如果您正在寻找不需要调度程序来运行的更简单的东西,您可以尝试ploomber ,它也与papermill集成(免责声明:我是作者)。

你可以下载.py形式的notebook,然后创建一个批处理文件来执行.py脚本。 然后在任务调度器中调度批处理文件

要手动运行您的笔记本:

jupyter nbconvert --to notebook --execute /home/username/scripts/mynotebook.ipynb

创建一个简单的批处理文件并将上面的命令添加到文件中:

/home/username/scripts/mynotebook.sh

将上面的命令粘贴到文件中

使文件可执行

chmod +x /home/username/scripts/mynotebook.sh

要安排您的笔记本使用 cron 或气流,取决于您的需求与复杂性。 如果你想使用 cron,你可以简单地执行 crontab -e 并添加一个条目

00 11 * * * /home/username/scripts/mynotebook.sh

创建一个 BAT 文件然后通过任务调度程序运行它对我有用。 下面是代码。

call C:\Users\...user...\Anaconda3\condabin\conda activate
python -m notebook_file.py
pause
call conda deactivate 

您想使用当前在 EAP 中的Google AI Platform Notebooks Scheduler 服务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM