APScheduler 和 zerorpc 不兼容
APScheduler and zerorpc incompatibility
看来使用 APScheduler 调度作业与 ZeroRPC 不一致。
- 使用 test(x) 进行测试时,ZeroRPC 运行良好。
- 当以 运行() 启动时,调度程序重复 returns 以下异常:
gevent.exceptions.LoopExit: This operation would block forever
Hub: <Hub '' at 0x1074aff60 select pending=0 ref=0 thread_ident=0x70000c356000>
Handles:
[]
以下是代码片段:
mport zerorpc
from apscheduler.schedulers.background import BlockingScheduler
from datetime import datetime
rpc = zerorpc.Client()
rpc.connect("tcp://{}:{}".format('127.0.0.1', 4242))
def test(x):
rpc.write('variable_name', x)
def run():
def test():
rpc.write('variable_name', 0)
rpc.write('variable_name', 1)
scheduler = BlockingScheduler()
scheduler.add_job(
func=test,
trigger='interval',
seconds=1,
start_date=datetime.now(),
)
scheduler.start()
APScheduler 在安排新任务时创建新线程。
ZeroRPC 需要为每个打开的线程创建一个实例。
看来使用 APScheduler 调度作业与 ZeroRPC 不一致。
- 使用 test(x) 进行测试时,ZeroRPC 运行良好。
- 当以 运行() 启动时,调度程序重复 returns 以下异常:
gevent.exceptions.LoopExit: This operation would block forever
Hub: <Hub '' at 0x1074aff60 select pending=0 ref=0 thread_ident=0x70000c356000>
Handles:
[]
以下是代码片段:
mport zerorpc
from apscheduler.schedulers.background import BlockingScheduler
from datetime import datetime
rpc = zerorpc.Client()
rpc.connect("tcp://{}:{}".format('127.0.0.1', 4242))
def test(x):
rpc.write('variable_name', x)
def run():
def test():
rpc.write('variable_name', 0)
rpc.write('variable_name', 1)
scheduler = BlockingScheduler()
scheduler.add_job(
func=test,
trigger='interval',
seconds=1,
start_date=datetime.now(),
)
scheduler.start()
APScheduler 在安排新任务时创建新线程。 ZeroRPC 需要为每个打开的线程创建一个实例。