2016-08-02 5 views
0

Ich versuche eine Thread-Funktion zu erstellen, die es mir ermöglicht, ein Datenbankfeld zu überprüfen, um zu sehen, ob die time.now() größer ist als die in der Datenbank (postgresql); Das Problem ist, dass die view.py, wo ich diese anrufe, von diesem Thread blockiert wird, das ist mein tatsächlicher Code:Django Time Checker Datenbank

PD: expire_pet ist ein Textfeld, dann gieße ich es auf datetime.

import socket 
import struct 
from time import * 
from datetime import datetime 
from models import Zone 
from multiprocessing import pool 
import threading 

class ControlHora(threading.Thread): 

     def __init__(self,zone_id): 
       threading.Thread.__init__(self) 
       self.zone_id = zone_id 

     def run(self): 

       while(True): 

         zone_pet = Zone.objects.filter(id = self.zone_id) 

         for i in zone_pet: 
           if i.pet_state == True: 
             hour = datetime.datetime.strptime(i.expire_pet, '%I:%M') 
             if hour <= datetime.datetime.now(): 
               Zone.objects.filter(id = self.zone_id).update(vitrasa_pet = False) 
               Zone.objects.filter(id = self.zone_id).update(esycsa_pet = False) 
               Zone.objects.filter(id = self.zone_id).update(pet_state = False) 
               Zone.objects.filter(id = self.zone_id).update(expire_pet='') 
           sleep(5) 
+0

Time out wird in der Client-Seite zeigt, wenn ich diesen Thread nennen – Datex2

Antwort

0

Es funktioniert, das Problem war, dass ich den Lauf an der falschen Stelle angerufen, dank