这个问题的演变
这开始是为了寻找在 Linux 上运行 Django、通过 Django-PyODBC 访问 SQL Server 以及像在 Windows 上运行 Django 一样有效地支持 Unicode 的其他建议。
在未能为 Linux 中的 ODBC 驱动程序提供与 Windows ODBC 驱动程序相同级别的 Unicode 支持的良好解决方案之后;这个问题变成了应对在 Windows 中没有 Apache 守护程序模式的负面影响。
问题
如果在 Windows 上运行 Apache+mod_wsgi,每次部署新的 Django 代码时都需要重新启动 Apache 服务器。有关原因的详细信息,请参阅格雷厄姆的回答。
当您可能需要重新启动 Apache,拒绝服务直到它完全重新启动时,如何运行一组可靠的应用程序和服务?
问题
我们使用 SQL Server 2005,我们需要支持Microsoft Office 应用程序中生成的unicode 字符和某些字符(如smart-quotes )。
在 SQL Server 2005 上运行 Django 需要我们使用 Django-PyODBC。它在 Windows/Linux/Mac OS X 上运行良好;但是,如果您需要 unicode 支持,那么您在 Linux / Mac OS X 上就不走运了 - Unix 中 SQL Server 的 ODBC 驱动程序处于 unicode 合规性的不同阶段。如果您指定客户端字符编码为 UTF-8 (*),则开源驱动程序FreeTDS适用于某些字符;但不支持所有字符。
在我们的测试中,在 Windows 2003 上运行 Django 并使用 Microsoft ODBC 驱动程序允许我们正确插入/更新/选择几种不同语言的任何字符,以及 Office 应用程序中的 Microsoft 智能字符。
但是在 Windows 上运行意味着每次我们部署新代码时都需要重新启动 Apache——这意味着几秒钟内没有服务。
(*) 坦率地说,我们设法让 FreeTDS 接受某些字符的唯一方法是在client charset
freetds.conf 中添加一个条目:
[a_db_server]
host = a_db_server
port = 1433
tds version = 8.0
client charset = UTF-8