Python 如何在ApsScheduler中使用Tornado?
我正在运行python的Python 如何在ApsScheduler中使用Tornado?,python,multithreading,concurrency,tornado,apscheduler,Python,Multithreading,Concurrency,Tornado,Apscheduler,我正在运行python的apscheduler,并定期想在一些http资源上做一些工作,这将涉及使用tornado的AsyncHttpClient作为计划作业。每项工作将做几个职位。当每个http请求响应时,就会调用一个回调(我认为Tornado使用future来实现这一点) 我在这里关心线程安全,因为Apscheduler在不同的线程中运行作业。我还没有找到一个解释得很好的例子,说明在这种情况下,如何最好地跨多个线程使用tornado 如何以这种方式将apscheduler与tornado结合
apscheduler
,并定期想在一些http资源上做一些工作,这将涉及使用tornado的AsyncHttpClient
作为计划作业。每项工作将做几个职位。当每个http请求响应时,就会调用一个回调(我认为Tornado使用future
来实现这一点)
我在这里关心线程安全,因为Apscheduler在不同的线程中运行作业。我还没有找到一个解释得很好的例子,说明在这种情况下,如何最好地跨多个线程使用tornado
如何以这种方式将apscheduler
与tornado
结合使用?
具体关注事项:
AsyncHTTPClient
“工作起来很神奇”。嗯,魔法吓到我了。我需要在当前线程中使用AsyncHTTPClient
,还是可以使用主线程(可以指定)tornado.ioloop.ioloop.instance()
,那么如果您不打算向主线程的ioloop添加回调,那么我想您会这样做。您可以使用tornado.ioloop.ioloop.current()
为正确的线程正确引用正确的ioloop实例。你将不得不做太多的簿记工作,从另一个非主线程的IOLoop向一个非主线程的IOLoop添加一个回调——这将变得太混乱apscheduler
,我建议使用Ioop,它做的事情与你需要的差不多,而且它是Tornado的本机,可以更好地使用它。回调无论如何都很难调试。将它与Python的线程技术结合起来,您可能会陷入一片混乱。如果你准备考虑另一个选项,只要把所有的异步处理从这个过程中移开,它会让生活变得简单多了。想一想芹菜之类的东西嘿,我的回答对你有什么帮助吗?如果您需要更多信息,请发表评论。谢谢您提供更多信息。此后,我开始通过gevent使用greenlets,并使用最近的ApsScheduler版本,该版本现在提供gevent兼容性。也可以在多个tornado进程上分散负载。在多个进程上分散负载比在tornado中使用线程要容易得多。即使是明智的管理,这也是一个更明智的选择。如果我的回答回答了你以前的要求/问题,如果你不介意的话,请你继续接受我的回答。