Jam*_*son 10 python django paramiko f5 gunicorn
我有一个运行Nginx和Gunicorn的Django项目.其中一个应用程序使用Exscript与网络设备交互,后者又使用Paramiko.有些设备在Gunicorn后面无法正常工作.
完全相同的代码可以在django-admin shell中正常工作.如果我启动内置的django服务器,它也会工作,但如果我绕过nginx,我仍然会收到错误,并直接连接到Gunicorn.
我尝试将功能转移到芹菜任务,它有同样的问题,但仅限于Gunicorn.
我使用django-extensions编写了一个脚本,该脚本可以从命令行运行,但如果通过子进程调用则会失败.但仅限于Gunicorn.
失败的设备似乎都是F5 LTM,看起来exscript对象上的缓冲区正在以某种方式被修改.如果我猜我会说,Gunicorn和Exscript /的paramiko莫名其妙地踩着对方的记忆,或许是Gunicorn设置一些环境变量Exscript是捡.
在任何情况下,我都是彻底难倒的,并会感谢任何关于如何解决这个问题的指导.
完全猜测,但这也许对调试有帮助。基本上,确保您已删除所有输出缓冲,这通常会隐藏分层多个大型框架时真正发生的情况(就像您在这里所做的那样)。
确保在 Python 中禁用所有输出缓冲,无论是对于前台 Web 服务器进程还是任何工作进程(设置PYTHONUNBUFFERED是确保 Python 脚本没有缓冲的简单方法,至少在标准库函数上)。
终端还可以引入缓冲区,使调试变得异常困难。考虑切换your command到stdbuf -o0 -e0 your command禁用 stdout 和 stderr 上的缓冲区(your command仍然可以重新启用它们,但大多数程序不会)。
| 归档时间: |
|
| 查看次数: |
347 次 |
| 最近记录: |