前言
大型的网络训练起来耗时太久了,所以我一般使用百度的aistudio云训练,然后人出去玩耍,在外面也不知道啥时候训练完成了,这里写个py脚本检测训练状态并发送提示短信给自己的手机。
注册twilio
网址:传送门
注册很简单,绑定下邮箱和手机就行了。
注册完登录界面:
拿到图中我已经打马赛克的account sid和AUTH TOKEN即可
然后这里点开左侧添加:
添加这个#字一栏
这里面可以找到active number
发短息代码
pycharm里面安装下包:
# -*- coding: utf-8 -*-
import time
from twilio.rest import Client
auth_token = '***************' # 去twilio.com注册账户获取token
account_sid = '****************'
client = Client(account_sid, auth_token)
def sent_message(phone_number,text):
mes = client.messages.create(
from_='**********', # 填写在active number处获得的号码
body=text,
to=phone_number
)
print("OK")
for i in range(2):
sent_message("+86*************","test")
监视代码训练情况
我考虑使用selenium控制已经打开的chrome网页。
首先在pycharm中打开终端,输入以下命令切换到谷歌浏览器目录下:
cd C:\Program Files (x86)\Google\Chrome\Application
执行命令打开谷歌浏览器并保存配置在本地,这里路径可以选择和代码同级目录:
chrome.exe --remote-debugging-port=9222 --user-data-dir="e:\py_code"
执行后会打开谷歌浏览器 ,然后自己手动的代开自己的aistudio项目即可。
完整监视代码:
# coding=utf-8
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
import requests
import os
import time
from twilio.rest import Client
auth_token = '33093998261***********0959861fe8e9' # 去twilio.com注册账户获取token
account_sid = 'ACf458f311a**********fc88e892d088193'
client = Client(account_sid, auth_token)
def sent_message(phone_number, text):
mes = client.messages.create(
from_='+186***13419', # 填写在active number处获得的号码
body=text,
to=phone_number
)
print("OK")
if __name__ == '__main__':
chrome_options = Options()
# chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
chrome_options.debugger_address = "127.0.0.1:9222"
chrome_driver = "chromedriver.exe"
driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)
while 1:
status = driver.find_element_by_xpath("//div[@class='n-s-status-name']").text
print(status)
time.sleep(2)
if not "运行中" in status:
sent_message("+86132****5355", "OK!")
break
time.sleep(5)
测试
发送邮件
上面这种方式发短信非常慢还经常失败,修改了python发邮件
# coding=utf-8
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
from twilio.rest import Client
# smtplib 用于邮件的发信动作
import smtplib
from email.mime.text import MIMEText
# email 用于构建邮件内容
from email.header import Header
auth_token = '3309399826******80959861fe8e9' # 去twilio.com注册账户获取token
account_sid = 'ACf458f311*******d6fc88e892d088193'
client = Client(account_sid, auth_token)
def sent_message(phone_number, text):
mes = client.messages.create(
from_='+18644813419', # 填写在active number处获得的号码
body=text,
to=phone_number
)
print("OK")
def send_Email(text, to_addr):
# 用于构建邮件头
# 发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr = '86****[email protected]'
password = 'mkgdx******tmibdee' # qq邮箱授权码
# 收信方邮箱
# to_addr = '86****[email protected]'
# 发信服务器
smtp_server = 'smtp.qq.com'
# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
msg = MIMEText(text, 'plain', 'utf-8')
# 邮件头信息
msg['From'] = Header(from_addr)
msg['To'] = Header(to_addr)
msg['Subject'] = Header('在线训练结果')
# 开启发信服务,这里使用的是加密传输
server = smtplib.SMTP_SSL(smtp_server)
server.connect(smtp_server, 465)
# 登录发信邮箱
server.login(from_addr, password)
# 发送邮件
server.sendmail(from_addr, to_addr, msg.as_string())
# 关闭服务器
server.quit()
if __name__ == '__main__':
chrome_options = Options()
# chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
chrome_options.debugger_address = "127.0.0.1:9222"
chrome_driver = "chromedriver.exe"
driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)
while 1:
status = driver.find_element_by_xpath("//div[@class='n-s-status-name']").text
print(status)
time.sleep(2)
if not "运行中" in status:
#sent_message("+861326*****55", "OK!") # 文本不要过长不然发送失败,不支持中文
send_Email("训练完成", "863*****[email protected]")
break
time.sleep(5)
总结
这个twilio不太好用又是外网登陆起来贼慢需要科学上网,然后发短信进场失败… …下次研究个别的方法。