我有一个非常基本的python http.server
。它会在127.0.0.1:8081
上收到请求并返回Hello World
- 一切都很好)
from http.server import BaseHTTPRequestHandler, HTTPServer
class Server(BaseHTTPRequestHandler):
def do_GET(self):
message = 'Hello world!'
# ... http stuff: headers, status
self.wfile.write(bytes(message, 'utf8'))
return
print('Starting server...')
server_address = ('127.0.0.1', 8081)
httpd = HTTPServer(server_address, Server)
print('Running server...')
httpd.serve_forever()
但是我想在bacground中创建一个无限while True
循环,无论请求如何,每分钟都会制造一些魔法。
如果我在httpd.serve_forever()
之前的某处添加:
import time
while True:
print('Some magic')
time.sleep(60)
Http服务器不会因打印Some magic
我无法弄清楚,我该怎么用? Asincio?多线程?可能是芹菜?或者有没有办法在Server.do_GET
暂时停止此循环,然后在请求继续后再次运行它?
大谢谢你的答案!
修改
我刚发现这个解决方案而不是while True
循环:
import threading
def infinite_loop():
print('Some magic')
threading.Timer(60, infinite_loop).start()
infinite_loop()
这是python 3.5的正常计划吗?还是有更好的方法?