APScheduler и zerorpc несовместимость - PullRequest
0 голосов
/ 03 мая 2019

Похоже, что планирование заданий с помощью APScheduler не согласуется с ZeroRPC.

  • При тестировании с использованием test (x) ZeroRPC работает хорошо.
  • При запуске с run () планировщик многократно возвращает следующее исключение:
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()

1 Ответ

0 голосов
/ 04 мая 2019

APScheduler создает новые потоки при планировании новых задач.ZeroRPC должен иметь экземпляр для каждого открытого потока.

...