Advertisement
Guest User

Untitled

a guest
Jun 7th, 2017
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.14 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. #! /usr/bin/env python
  3. import win32serviceutil
  4. import win32service
  5. import win32event
  6. import servicemanager
  7. import pyodbc
  8. import mysql.connector
  9. import time
  10. import odbc
  11.  
  12. class AppServerSvc (win32serviceutil.ServiceFramework):
  13. _svc_name_ = "Solid_DB"
  14. _svc_display_name_ = "Solid_DB"
  15. _svc_description_ = "__Import data from \\c-dispatcher-sh\view\solid74..78 to my sql asdk id(74001-78003)"
  16.  
  17. def __init__(self,args):
  18. win32serviceutil.ServiceFramework.__init__(self,args)
  19. self.hWaitStop = win32event.CreateEvent(None,0,0,None)
  20. self.hWaitResume = win32event.CreateEvent(None, 0, 0, None)
  21. self.timeout = 400 #Пауза между выполнением основного цикла службы в миллисекундах
  22. self.resumeTimeout = 400
  23. self._paused = False
  24.  
  25. def SvcStop(self):
  26. self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
  27. win32event.SetEvent(self.hWaitStop)
  28. servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
  29. servicemanager.PYS_SERVICE_STOPPED,
  30. (self._svc_name_, ''))
  31.  
  32. def SvcPause(self):
  33. self.ReportServiceStatus(win32service.SERVICE_PAUSE_PENDING)
  34. self._paused = True
  35. self.ReportServiceStatus(win32service.SERVICE_PAUSED)
  36. servicemanager.LogInfoMsg("The %s service has paused." % (self._svc_name_, ))
  37.  
  38. def SvcContinue(self):
  39. self.ReportServiceStatus(win32service.SERVICE_CONTINUE_PENDING)
  40. win32event.SetEvent(self.hWaitResume)
  41. self.ReportServiceStatus(win32service.SERVICE_RUNNING)
  42. servicemanager.LogInfoMsg("The %s service has resumed." % (self._svc_name_, ))
  43.  
  44.  
  45.  
  46. def SvcDoRun(self):
  47. servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
  48. servicemanager.PYS_SERVICE_STARTED,
  49. (self._svc_name_,''))
  50. self.main()
  51.  
  52. def timestamp(data):
  53. data=time.mktime(data.timetuple())
  54. return data
  55.  
  56. def read_solid_74(self):
  57. MDB = 'z:\Solid074.mdb'
  58. DRV = '{Microsoft Access Driver (*.mdb, *.accdb)}'
  59. #PWD = 'mypassword'
  60.  
  61. #conn = pyodbc.connect('DRIVER=%s;DBQ=%s' % (DRV,MDB))
  62. #curs = conn.cursor()
  63. cnxn = pyodbc.connect('DRIVER=%s;DBQ=%s' % (DRV,MDB), autocommit=True)
  64.  
  65. #cnxn = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb)};DSN=solid_74;UID=GRD\nekrasov-ee;PWD=qwerty-12')
  66. cursor = cnxn.cursor()
  67. #cursor.rollback()
  68. cursor.execute('select DatTime, Q, Ro, Sol from Solid order by Dattime')
  69. rows = cursor.fetchall()
  70. cursor.rollback()
  71. cursor.close()
  72. cnxn.close()
  73. return rows
  74. def read_solid_78(self):
  75. cnxn = pyodbc.connect("DSN=solid_78")
  76. cursor = cnxn.cursor()
  77. cursor.rollback()
  78. cursor.execute('select DatTime, Q, Ro, Sol from Solid order by Dattime')
  79. rows = cursor.fetchall()
  80. cursor.rollback()
  81. cursor.close()
  82. cnxn.close()
  83. return rows
  84.  
  85.  
  86. def update_asdk_Q_74(a,b):
  87. cnxn2 = mysql.connector.connect(user='root', password='', host='127.0.0.1', database='asdk')
  88. cursor2 = cnxn2.cursor()
  89. cursor2.execute('UPDATE signals SET signals.status ='+ str(a) +' '+'WHERE signals.id=74001')#update signals set signals.status=121234 where signals.id = 74001'
  90. cursor2.execute('UPDATE signals SET signals.timestamp='+str(b)+' '+'WHERE signals.id=74001')#update signals set signals.status=121234 where signals.id = 74001'
  91.  
  92. cursor2.close()
  93. cnxn2.commit()
  94. cnxn2.close()
  95. def update_asdk_Po_74(a,b):
  96. cnxn2 = mysql.connector.connect(user='root', password='', host='127.0.0.1', database='asdk')
  97. cursor2 = cnxn2.cursor()
  98. cursor2.execute('UPDATE signals SET signals.status ='+ str(a) +' '+'WHERE signals.id=74002')#update signals set signals.status=121234 where signals.id = 74001'
  99. cursor2.execute('UPDATE signals SET signals.timestamp='+str(b)+' '+'WHERE signals.id=74002')#update signals set signals.status=121234 where signals.id = 74001'
  100.  
  101. cursor2.close()
  102. cnxn2.commit()
  103. cnxn2.close()
  104. def update_asdk_Sol_74(a,b):
  105. cnxn2 = mysql.connector.connect(user='root', password='', host='127.0.0.1', database='asdk')
  106. cursor2 = cnxn2.cursor()
  107. cursor2.execute('UPDATE signals SET signals.status ='+ str(a) +' '+'WHERE signals.id=74003')#update signals set signals.status=121234 where signals.id = 74001'
  108. cursor2.execute('UPDATE signals SET signals.timestamp='+str(b)+' '+'WHERE signals.id=74003')#update signals set signals.status=121234 where signals.id = 74001'
  109.  
  110. cursor2.close()
  111. cnxn2.commit()
  112. cnxn2.close()
  113. def update_asdk_Q_78(a,b):
  114. cnxn2 = mysql.connector.connect(user='root', password='', host='127.0.0.1', database='asdk')
  115. cursor2 = cnxn2.cursor()
  116. cursor2.execute('UPDATE signals SET signals.status ='+ str(a) +' '+'WHERE signals.id=78001')#update signals set signals.status=121234 where signals.id = 74001'
  117. cursor2.execute('UPDATE signals SET signals.timestamp='+str(b)+' '+'WHERE signals.id=78001')#update signals set signals.status=121234 where signals.id = 74001'
  118.  
  119. cursor2.close()
  120. cnxn2.commit()
  121. cnxn2.close()
  122. def update_asdk_Po_78(a,b):
  123. cnxn2 = mysql.connector.connect(user='root', password='', host='127.0.0.1', database='asdk')
  124. cursor2 = cnxn2.cursor()
  125. cursor2.execute('UPDATE signals SET signals.status ='+ str(a) +' '+'WHERE signals.id=78002')#update signals set signals.status=121234 where signals.id = 74001'
  126. cursor2.execute('UPDATE signals SET signals.timestamp='+str(b)+' '+'WHERE signals.id=78002')#update signals set signals.status=121234 where signals.id = 74001'
  127.  
  128. cursor2.close()
  129. cnxn2.commit()
  130. cnxn2.close()
  131. def update_asdk_Sol_78(a,b):
  132. cnxn2 = mysql.connector.connect(user='root', password='', host='127.0.0.1', database='asdk')
  133. cursor2 = cnxn2.cursor()
  134. cursor2.execute('UPDATE signals SET signals.status ='+ str(a) +' '+'WHERE signals.id=78003')#update signals set signals.status=121234 where signals.id = 74001'
  135. cursor2.execute('UPDATE signals SET signals.timestamp='+str(b)+' '+'WHERE signals.id=78003')#update signals set signals.status=121234 where signals.id = 74001'
  136.  
  137. cursor2.close()
  138. cnxn2.commit()
  139. cnxn2.close()
  140.  
  141.  
  142. def read_asdk2(self):
  143. #print 'asdasd'
  144. cnxn2 = mysql.connector.connect(user='root', password='', host='127.0.0.1', database='asdk')
  145. cursor2 = cnxn2.cursor()
  146. cursor2.execute('UPDATE signals SET signals.status = 5555 WHERE signals.id=78003')
  147. cursor2.close()
  148. cnxn2.commit()
  149. cnxn2.close()
  150. return rows2
  151.  
  152.  
  153.  
  154. def read_write_74(self):
  155. solid_74 = max(self.read_solid_74())
  156. if len(str(round(solid_74[1],1)))==6:
  157. solid_74[1]=solid_74[1]*10
  158. if len(str(round(solid_74[1],1)))==5:
  159. solid_74[1]=solid_74[1]*1000
  160. solid_74[2]=solid_74[2]*10000
  161.  
  162. #if len(str(round(solid_74[2],4)))==6:
  163. # solid_74[2]=solid_74[2]*10000
  164. #if len(str(round(solid_74[2],3)))==5:
  165. # solid_74[2]=solid_74[2]*100
  166. self.update_asdk_Q_74 (int(solid_74[1]),timestamp(solid_74[0]))#a[0]
  167. self.update_asdk_Po_74 (int(solid_74[2]),timestamp(solid_74[0]))#a[0]
  168. self.update_asdk_Sol_74(int(solid_74[3]),timestamp(solid_74[0]))#a[0]
  169. #print solid_74[0]
  170.  
  171. def read_write_78(self):
  172. solid_78 = max(self.read_solid_78())
  173. if len(str(round(solid_78[1],1)))==6:
  174. solid_78[1]=solid_78[1]*10
  175. if len(str(round(solid_78[1],1)))==5:
  176. solid_78[1]=solid_78[1]*1000
  177. solid_78[2]=solid_78[2]*10000
  178. #if len(str(round(solid_78[2],4)))==6:
  179. # solid_78[2]=solid_78[2]*10000
  180. #if len(str(round(solid_78[2],3)))==5:
  181. # solid_78[2]=solid_78[2]*100
  182. self.update_asdk_Q_78 (int(solid_78[1]),timestamp(solid_78[0]))#a[0]
  183. self.update_asdk_Po_78 (int(solid_78[2]),timestamp(solid_78[0]))#a[0]
  184. self.update_asdk_Sol_78(int(solid_78[3]),timestamp(solid_78[0]))#a[0]
  185. #print solid_78[0]
  186. #В этом методе реализовываем нашу службу
  187. def main(self):
  188.  
  189. #Здесь выполняем необходимые действия при старте службы
  190. servicemanager.LogInfoMsg("Hello! I'm a Dummy Service.")
  191. while True:
  192. self.read_solid_74()
  193. servicemanager.LogInfoMsg("I'm still here.")
  194. #Проверяем не поступила ли команда завершения работы службы
  195. rc = win32event.WaitForSingleObject(self.hWaitStop, self.timeout)
  196. if rc == win32event.WAIT_OBJECT_0:
  197. #Здесь выполняем необходимые действия при остановке службы
  198. servicemanager.LogInfoMsg("Bye!")
  199. break
  200. #Здесь выполняем необходимые действия при приостановке службы
  201. if self._paused:
  202. servicemanager.LogInfoMsg("I'm paused... Keep waiting...")
  203. #Приостановка работы службы
  204. while self._paused:
  205. #Проверям не поступила ли команда возобновления работы службы
  206. rc = win32event.WaitForSingleObject(self.hWaitResume, self.resumeTimeout)
  207. if rc == win32event.WAIT_OBJECT_0:
  208. self._paused = False
  209. #Здесь выполняем необходимые действия при возобновлении работы службы
  210. servicemanager.LogInfoMsg("Yeah! Let's continue!")
  211. break
  212.  
  213. if __name__ == '__main__':
  214. win32serviceutil.HandleCommandLine(AppServerSvc)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement