dever před 6 roky
rodič
revize
2ccaa68d22
2 změnil soubory, kde provedl 39 přidání a 2 odebrání
  1. 37 1
      demeter/core.py
  2. 2 1
      requirements.txt

+ 37 - 1
demeter/core.py

@@ -12,6 +12,8 @@ import sys
 import json
 import subprocess
 import importlib
+from watchdog.observers import Observer
+from watchdog.events import FileSystemEventHandler
 class Demeter(object):
 	path = ''
 	root = ''
@@ -411,7 +413,7 @@ class Demeter(object):
 class Log(object):
 
 	@staticmethod
-	def get(name):
+	def init(name):
 		import logging
 		from logging.handlers import RotatingFileHandler
 		formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
@@ -429,6 +431,40 @@ class Log(object):
 
 		return logger
 
+class WatchDog(object):
+
+	@staticmethod
+	def init(path = [], reloads = [], recursive = False):
+		event_handler = WatchDogHandle(reloads)
+		observer = Observer()
+		base = File.path()
+		if not path:
+			path = ['conf/',]
+		for item in path:
+			observer.schedule(event_handler, base + item, recursive=recursive)
+		observer.start()
+
+		return observer
+
+class WatchDogHandle(FileSystemEventHandler):
+
+	@classmethod
+	def __init__(self, reloads = False):
+		FileSystemEventHandler.__init__(self)
+		self.reloads = reloads
+		print self.reloads
+
+	@classmethod
+	def on_modified(self, event):
+		if not event.is_directory and '.' in event.src_path:
+			if self.reloads:
+				for item in self.reloads:
+					item.reload()
+			elif Demeter.web:
+				Demeter.webInit(Demeter.web)
+			else:
+				Demeter.echo('modify ' + event.src_path)
+
 class File(object):
 
 	@staticmethod

+ 2 - 1
requirements.txt

@@ -3,4 +3,5 @@ pymysql
 celery
 short_url
 requests
-logging
+logging
+watchdog