Os.system 不会将 cron 警报中的消息推送到 cronitor?
Os.system doesn't push message in cron alert to cronitor?
我是 运行 一个使用 cron 作业的 python 脚本。当脚本运行时,它会提示它已完成或失败。它应该将消息连同完成 ping 一起发送到 cronitor。 link 的示例如下:
https://cronitor.link/p/id/key?state=complete&msg='Success'
当我将 link 放入搜索栏并按 Enter 键时,该消息显示在 cronitor 中。但是,当我尝试通过脚本在 运行 link 时打印消息时,它不起作用。 Cronitor 收到成功完成但未显示任何消息的 ping:
cron_alert = "/usr/local/bin/curl --silent https://cronitor.link/p/id/key?state=complete&msg='Success'"
os.system(cron_alert)
我尝试删除“--silent”,但没有任何效果。有想法该怎么解决这个吗?谢谢
您的命令包含未转义的 &
,os.system
使用的 shell 将其解析为在后台运行 curl
的命令终止符。你需要转义它,例如
cron_alert = \
"/usr/local/bin/curl --silent \"https://cronitor.link/p/id/key?state=complete&msg='Success'\""
但更好的办法是停止使用 os.system
并改用 subprocess.run
。
import subprocess
subprocess.run(["/usr/local/bin/curl",
"--silent",
"https://cronitor.link/p/id/key?state=complete&msg='Success'"])
完全绕过了 shell。
最好使用像 requests
这样的库从 Python 发送请求,而不是分叉一个新进程。
import requests
requests.get("https://cronitor.link/p/id/key",
params={'state': 'complete', 'msg': "'Success'"})
(在所有情况下,API 是否真的需要在 Success
周围加上单引号?)
我是 运行 一个使用 cron 作业的 python 脚本。当脚本运行时,它会提示它已完成或失败。它应该将消息连同完成 ping 一起发送到 cronitor。 link 的示例如下:
https://cronitor.link/p/id/key?state=complete&msg='Success'
当我将 link 放入搜索栏并按 Enter 键时,该消息显示在 cronitor 中。但是,当我尝试通过脚本在 运行 link 时打印消息时,它不起作用。 Cronitor 收到成功完成但未显示任何消息的 ping:
cron_alert = "/usr/local/bin/curl --silent https://cronitor.link/p/id/key?state=complete&msg='Success'"
os.system(cron_alert)
我尝试删除“--silent”,但没有任何效果。有想法该怎么解决这个吗?谢谢
您的命令包含未转义的 &
,os.system
使用的 shell 将其解析为在后台运行 curl
的命令终止符。你需要转义它,例如
cron_alert = \
"/usr/local/bin/curl --silent \"https://cronitor.link/p/id/key?state=complete&msg='Success'\""
但更好的办法是停止使用 os.system
并改用 subprocess.run
。
import subprocess
subprocess.run(["/usr/local/bin/curl",
"--silent",
"https://cronitor.link/p/id/key?state=complete&msg='Success'"])
完全绕过了 shell。
最好使用像 requests
这样的库从 Python 发送请求,而不是分叉一个新进程。
import requests
requests.get("https://cronitor.link/p/id/key",
params={'state': 'complete', 'msg': "'Success'"})
(在所有情况下,API 是否真的需要在 Success
周围加上单引号?)