在mod_python上运行多线程代码
我写了一个Django应用,这个应用利用Python的多线程功能来创建一个网络爬虫。这个爬虫通过多个线程来检查链接。
当我在Django自带的测试服务器上运行这个应用时,一切都很正常,线程似乎也能按时启动和停止。
但是,当我在Apache服务器上运行这个应用时,线程好像没有启动和运行(大约80秒后应该有一个排队的数据库更新,但这些变化并没有发生)。
有没有人知道我这里缺少了什么?
-- 补充:我的问题是,Apache是如何处理多线程应用的?也就是说,从一个应用中可以运行的线程数量是否有限制?
任何帮助都非常感谢!
1 个回答
3
很可能你没有创建新的进程。Apache不会只在一个进程里运行,而是会根据需要不断地生成新的进程来处理请求(这取决于一些配置参数)。如果你在每个进程中运行Django,它们之间不会共享内存,也就是说,一个进程产生的结果在其他进程中是看不到的。此外,Apache的进程可能会因为闲置或者过了一段时间而终止,这样你在内存中的结果就会被丢弃。