Kaynağa Gözat

move tasks to decorators

David 10 yıl önce
ebeveyn
işleme
196641dd5d
3 değiştirilmiş dosya ile 12 ekleme ve 40 silme
  1. 0 20
      back/db.py
  2. 7 0
      back/tasks.py
  3. 5 20
      back/web.py

+ 0 - 20
back/db.py

@@ -1,20 +0,0 @@
-import pymysql
-
-class db():
-	DB = "EBA_STOCK"
-	USER = "root"
-	PASSWORD = "howdoiturnthison"
-	def __init__(self):
-		self.conn = pymysql.connect(unix_socket='/var/run/mysqld/mysqld.sock', user=db.USER, passwd=db.PASSWORD, db=db.DB)	
-
-	def products(self, _id=None):
-		ret=[]
-		if _id is None:
-			cur = self.conn.cursor()
-			cur.execute("SELECT id,nombre,precio FROM productos where id between 1000 and 2999")
-			for row in cur:
-				ret.append({"id":row[0],"nombre":row[1],"precio":row[2],"cantidad":0})
-		else:
-			pass
-
-		return ret

+ 7 - 0
back/tasks.py

@@ -1,8 +1,12 @@
 import time
 from subprocess import Popen,PIPE
 from rq import get_current_job
+from rq.decorators import job
+from worker import conn
 import os.path
 
+
+@job('default',connection=conn, timeout=30)
 def long_job(arg):
     for i in range(20):
         time.sleep(1)
@@ -13,11 +17,14 @@ def long_job(arg):
     return "37"
 
 
+@job('default',connection=conn, timeout=3600*2, result_ttl=3600*2)
 def upload_video(title,thumb_path,video_path):
     import youtube_upload.main
     j=get_current_job()
     return youtube_upload.main.main(title,thumb_path,video_path,job=j)
 
+
+@job('default',connection=conn, timeout=360*2, result_ttl=360*2)
 def cut_video(in_fname,start_time,end_time,out_fname):
     if not os.path.isfile(in_fname):
         return { "status":"error",

+ 5 - 20
back/web.py

@@ -1,16 +1,10 @@
 #!/usr/bin/env python3
-import datetime
-import json
-import urllib
-from db import db
-from flask import Flask, abort, jsonify, request
-import time
 import tasks
 
+from flask import Flask, jsonify
 from rq import Queue
 from rq.job import Job
 from worker import conn
-q = Queue(connection=conn)
 
 PORT = 8981
 BASE_PATH="/back" #changes based on webserver
@@ -31,14 +25,10 @@ def raw_list():
 @app.route(BASE_PATH + '/job')
 def job():
     # func=tasks.cut_video , args=("/home/david/movie-1467033043.flv","0:45","1:48:00","/home/david/salida-cortada.mp4",), result_ttl=5000
-    job = q.enqueue_call(
-            func=tasks.upload_video,
-            args=("titulo","/home/david/photo_2016-07-10_13-49-56.jpg","/home/david/movie-1467033043.flv",),
-            timeout=3600*2,
-            result_ttl=3600*2
-        )
-    #con decorator seria:
-    #tasks.upload_video.delay(..args..)
+    #job = tasks.long_job.delay("test")
+    job = tasks.cut_video.delay("/home/david/movie-1467033043.flv","0:45","1:48:00","/home/david/salida-cortada.mp4")
+#    job = tasks.upload_video.delay("titulo","/home/david/photo_2016-07-10_13-49-56.jpg","/home/david/movie-1467033043.flv")
+
     ret = {"id":job.get_id()}
 
     return jsonify(ret)
@@ -54,9 +44,6 @@ def get_results(job_key):
         return str(job.result), 200
     else:
         return "%s" % json.dumps(job.meta) , 202
-        #return "Nay! %s - %s" % (job.meta.get('video_id'),job.meta.get('status')) , 202
-        #return "Nay! %s - %s" % (job.meta.get('video_id'),job.meta.get('status')) , 202
-
 
 @app.route(BASE_PATH + '/cut')
 def cut_list():
@@ -68,7 +55,5 @@ def uploaded_list():
     ret=[]
     return jsonify(ret)
 
-
-
 if __name__ == '__main__':
     app.run(host="0.0.0.0",port=PORT, debug=True)