每次改完密码,记得重启pod!
每次改完密码,记得重启pod!
每次改完密码,记得重启pod!
效果:每隔一天发邮件来统计教室利用率
关键点1:django.setup()可以调用model模型的数据。
关键点2:进入pod内部启动 schedules.py(如果pod重启,则需要重新手动启动 schedules.py)
代码:
- schedules.py放在manage.py同一路径下
import os, sys, time
import threading
import django
import schedule
from datetime import datetime
from django.db.models import Q
base_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
print(base_path)
# 将项目路径加入到系统path中,这样在导入模型等模块时就不会报模块找不到了
sys.path.append(base_path)
os.environ['DJANGO_SETTINGS_MODULE'] ='classroom_management.settings' # 注意:base_django_api 是我的模块名,你在使用时需要跟换为你的模块
django.setup()
# from base.models import ConfDict
from myclassroom.models import *
from myclassroom import ExchangeEmailSent
webmail_items = webmail.objects.all()
# 编辑邮件内容
def get_msg5(x1=0,x2=0,x3=0,x4=0):
msg = '''
<div>Dear all,</div>
<div>教室使用状况汇总如下,请点击下方进行查看。</div>
<a href='http://127.0.0.1:8000/query_booking_apply/'>查看链接</a>
<div>今天教室预约为{0}笔</div>
<div>今天教室已核准预约为{1}笔</div>
<div>今天教室已核准的预定时数为{2}H</div>
<div>今天教室利用率为{3}%</div>
<div>承办人:WZS_HR</div>
<div>邮件为自动发送,请不要直接回复。</div>
'''.format(x1,x2,x3,x4)
return msg
def count_minutes(timestr):
mySecond = 0
time_hour = int(timestr.split(':')[0])*60
time_min = int(timestr.split(':')[1])
Minutes_sum = time_hour + time_min
return Minutes_sum
def confdict_handle():
while True:
try:
loca_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print('本地时间:'+str(loca_time))
print('booking数量',len(booking.objects.all()))
# 整理邮件内容
booking_all = booking.objects.all()
booking_times = len(booking_all.filter(Q(booking_date=datetime.now().date())))
booking_agree_items = booking_all.filter(Q(booking_date=datetime.now().date())\
& Q(booking_approve_Y_N='Y'))
booking_agree_times = len(booking_all.filter(Q(booking_date=datetime.now().date())\
& Q(booking_approve_Y_N='Y')))
# 计算预约时数
Hour_sum = 0
if booking_agree_items:
for each_booking_agree_items in booking_agree_items:
Minutes_sum = count_minutes(str(each_booking_agree_items.booking_end_time)) - count_minutes(str(each_booking_agree_items.booking_start_time)) + 1
Hour_sum = Hour_sum + Minutes_sum/60
print('Hour_sum',Hour_sum)
Hour_sum = round(Hour_sum,1)
# 计算教室利用率
use_percentage = 0
classroom_hours = classroom.objects.filter(Q(classroom_active='Y')).count()*8
try:
use_percentage = round((Hour_sum / classroom_hours),4)*100
except Exception as e:
print('发生错误,错误信息为:', e)
pass
print('classroom_hours',classroom_hours)
print('use_percentage',use_percentage)
email_remark_2_new = get_msg5(x1=booking_times,x2=booking_agree_times,x3=Hour_sum,x4=use_percentage)
print('email_remark_2_new',email_remark_2_new)
#ExchangeEmailSent.send_exchange_mail(subject='【教室借订系统】教室使用状态通知-{0}'.format(datetime.now().date()),body=email_remark_2_new)
time.sleep(60*60*24)
except Exception as e:
print('发生错误,错误信息为:', e)
pass
def main():
'''
主函数,用于启动所有定时任务,因为当前定时任务是手动实现,因此可以自由发挥
'''
try:
# 启动定时任务,多个任务时,使用多线程
task1 = threading.Thread(target=confdict_handle)
task1.start()
except Exception as e:
print('发生异常:%s' % str(e))
if __name__ == '__main__':
main()
在pod内部启动schedules.py。
参考文章
https://blog.csdn.net/weixin_42782150/article/details/123212604