Tho*_*mas 5 python multithreading asynchronous signals gitpython
我正在使用GitPython 包从 Python 访问 Git 存储库。这会引入async 包。在 中async/__init__.py,发生以下情况:
def _init_signals():
"""Assure we shutdown our threads correctly when being interrupted"""
import signal
# ...
signal.signal(signal.SIGINT, thread_interrupt_handler)
_init_signals()
Run Code Online (Sandbox Code Playgroud)
如果一切都在主线程中,这可以正常工作。然而,当第一次导入git(和因此async) 发生在另一个线程上时,事情会变得繁荣:
ValueError: signal only works in main thread
Run Code Online (Sandbox Code Playgroud)
由于所有这些都在 Django 框架内运行,因此我无法控制线程。
我发现的一种解决方法是 put import asyncinto settings.py,它(显然)在主线程上导入。然而,这需要在每次安装的基础上完成,所以对我的 Django 应用程序的用户来说不是很好。
我尝试捕获异常,但引发异常的导入未完全完成,因此下一个import async也会失败。
你能想出任何半途而废的方法来解决这个问题吗?
更新:我注意到 Apache 的 mod_wsgi 足够聪明,可以忽略signal调用:
[Tue Sep 07 19:53:11 2010] [warn] mod_wsgi (pid=28595): Callback registration for signal 2 ignored.
Run Code Online (Sandbox Code Playgroud)
不过,问题仍然存在于 Django 开发服务器上。
| 归档时间: |
|
| 查看次数: |
1141 次 |
| 最近记录: |