1. 程式人生 > 實用技巧 >Django 定時自動 、手動錄製視訊介面

Django 定時自動 、手動錄製視訊介面

你負責努力,剩下交給天意

- 終於寫完了一個小需求。從0到1

- 部門同事突然給我一個需求,說讓我寫一個視訊錄製介面,剩下的我就可以不用管了,期初完全無從下手

- 是這樣的通過手動,自動,來錄製視訊,還要定時根據時間來錄製視訊,真的是無從下手啊,踏破鐵鞋無覓出 慢慢寫,修修改改寫了倆天左右的時間終於寫完了 這裡記錄一下 嗚嗚!

- 這裡就簡簡單單實現一個錄製視訊視屏的一個介面,只有後端程式碼

- 注意! 這裡只是展示部分程式碼,並且是虛擬碼哦!只是給大家做類似業務的提供一個思路! 程式碼執行不了哦!

- 不可私自轉發!!!!!

# model

class XX(models.Model):
    xxx 
= models.DateTimeField(auto_now_add=True) xxx = models.DateTimeField(auto_now_add=True) user_type_choices = ( (1,'未錄製'), (2,'停止'), (3,'錄製') ) xxx = models.IntegerField(choices=user_type_choices,default=1) xxx = models.CharField(max_length=55) xxx
= models.CharField(max_length=22)
# viwes  手動
def index(request):
    if request.method == 'GET':
        rec_all = XX.objects.all()
        id = request.GET.get('id')
        # print(id)
        start = request.GET.get('start')
        # print(start)
        # 開始錄製
        start_rec = XX.objects.filter(id=id)
        
for start_2 in start_rec: if start_2.XX== 2: start_2.XX= 3 start_2.save() return HttpResponse('繼續錄製')   ## 省略邏輯 ......# 暫停邏輯 stop_id = request.GET.get('stop_id') resc = XX.objects.filter(id=stop_id) # print(resc) for i in resc: if i.XX== 1: # pass return HttpResponse('還沒有錄製') ##省略 邏輯 ...... return render(request,'index.html'#定時任務 自動錄製 這裡只有開始錄製 沒有定時關閉結束錄製 自己好好想想結束錄製怎麼搞! views
from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_events, register_job


# 例項化排程器
scheduler = BackgroundScheduler()
# 排程器使用DjangoJobStore()
scheduler.add_jobstore(DjangoJobStore(), "default")

#  設定定時任務,選擇方式為interval 時間間隔 seconds
#  更具時間開始定時錄製
@register_job(scheduler, "interval")
def test_job():
    # 這是當前時間  這個時間是我根據業務的時間而定的!!!! 需要的自己改一下就可以了! x是根據你的業務來定的哦,如果是中國時區 就不需要減了!
    time_now = datetime.datetime.now() - datetime.timedelta(hours=x)
    time = str(time_now)
    # print(time)
    str_time = time[:19]
    # print(time_now)
    res = XX.objects.all()
    for i in res:
        # 這是資料庫開始時間
        time = str(i.start_timestamp)
        # print(time)
        str_start_time = time[:19]
        # print(str_start_time)
# print(str_stop_time)
     # 省略邏輯   大概思路就是將你的資料庫狀態定時的去獲取改變即可!
register_events(scheduler)
scheduler.start()
  
# urls
在你的 urls 把你的views.py匯入進去,否則定時任務就會失效!
# app  是我的子引用名
from app import views
#定時任務配置!
pip install django_apscheduler

在 settings 中新增

INSTALLED_APPS = [
    'django_apscheduler',               
]


APSCHEDULER_DATETIME_FORMAT = "N j, Y, f:s a"  # Default