Dieser Code generiert 3 Webseiten mit CheryPy. Es funktioniert, aber jetzt muss ich regelmäßig die Funktion "PageWeb" ausführen, um letzte Informationen von einer Abfrage zu haben. Wie Einfädeln in CherryPy zu verwenden:Wie man regelmäßig eine Funktion in CherryPy ausführt
from Widget import showLine
from Widget import SocketLivestatus
import cherrypy
import threading
def PageWeb(cluster):
# Open Socket
table = SocketLivestatus(['host1','host2'], 50000, cluster)
# Result
Line = showLine(table)
HTML = '''<!doctype html>
<html lang="en">
<head><meta charset="utf-8">
<title>Widget</title>
<link rel="stylesheet" href="css/font-awesome.min.css">
</head>
<body style="background-color: #1F1F1F">'''+Line+'''</body>
</html>'''
return HTML
#BEFORE
re7 = PageWeb("re7")
prod1 = PageWeb("prod1")
prod2 = PageWeb("prod2")
#MY GOAL
re7 = threading.Timer(5.0, PageWeb("re7")).start()
prod1 = threading.Timer(5.0, PageWeb("prod1")).start()
prod2 = threading.Timer(5.0, PageWeb("prod2")).start()
class HelloWorld(object):
@cherrypy.expose
def re7(self):
return re7
@cherrypy.expose
def prod1(self):
return prod1
@cherrypy.expose
def prod2(self):
return prod2
if __name__ == '__main__':
cherrypy.config.update(
{'server.socket_host': '0.0.0.0'})
cherrypy.quickstart(HelloWorld(),config={
'/':
{ 'tools.staticdir.on':True,
'tools.staticdir.dir': "/app"
}
# '/fonts':
# { 'tools.staticdir.on':True,
# 'tools.staticdir.dir': "/app"
# }
})
Das Problem über threading.Timer ist (5,0, PageWeb ("...")) start() einen Fehler zurück.
Traceback (most recent call last):
File "/usr/lib64/python2.7/threading.py", line 811, in __bootstrap_inner
self.run()
File "/usr/lib64/python2.7/threading.py", line 1083, in run
self.function(*self.args, **self.kwargs)
TypeError: 'str' object is not callable
I möchte helfen, Threading-Funktion in CherryPy zu verwenden.
Vielleicht sollten Sie diese Arbeit an externe Warteschlange wie RQ delegieren: http://Stackoverflow.com/a/36750783/595220 – webKnjaZ