- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在开发 Tornado 应用程序时,我经常想重新启动服务器以获取新的更改。我按下 ctrl-c 来停止服务器,但是对于 Tornado,这似乎非常慢。它在关闭之前等待很多秒,或者在发出 ctrl-c 时根本不关闭。
奇怪的是,如果在单击 ctrl-c 后,我向服务器发出新请求(例如,通过刷新指向服务器的浏览器),它会立即关闭。
有人知道如何解释或解决这个问题吗?有没有人经历过类似的事情?
(注意,这是在 Windows 上。)
最佳答案
在 Python 中,信号总是由主线程处理。如果 IOLoop 从主线程运行,它会在服务器空闲并等待 IO 时阻塞它。结果,所有信号都将等待线程唤醒。这解释了为什么发送请求会关闭服务器。
更新:您可以尝试这样的操作:
def set_ping(ioloop, timeout):
ioloop.add_timeout(timeout, lambda: set_ping(ioloop, timeout))
然后:
ioloop = tornado.ioloop.IOLoop.instance()
set_ping(ioloop, timedelta(seconds=2))
ioloop.start()
当你开始循环时。因此,select
将在 2.0 秒超时后被调用,从而防止阻塞。 (另请参阅 IOLoop Timeouts)
(注意:我无法在 Linux 上重现您的情况,即使我手动设置要使用的 select
,所以我不能 100% 保证这会有所帮助,但听起来似乎有道理)
关于python - 为什么当我按下 ctrl-c 时 Tornado 会花这么长时间才能死掉?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9578245/
我正在尝试将 sed 脚本迁移到 Perl 单行脚本,因为 Perl 支持非贪婪正则表达式。我接受了 Non greedy (reluctant) regex matching in sed? 的建议
我正在使用动态多级哈希,从中读取数据但也写入数据。 对我来说一个常见的陷阱是访问不存在的键(错别字、数据库修订等)。我得到 undef s 传播到其他部分并导致问题。我要die每当我尝试读取一个不存在
我希望我的脚本 perl 在生成警告时死掉,包括由使用的包生成的警告。 例如,这应该死: use strict; use warnings; use Statistics::Descriptive;
我有一个内存密集型 celery 任务,我希望它在大部分时间都处于关闭状态的昂贵 AWS 服务器中运行。 celery 节拍将每天安排一次任务,但也可以通过网络应用程序(== django)手动安排。
我是一名优秀的程序员,十分优秀!