我在使用mod_wsgi部署的apache2上运行了一个python Web应用程序。应用程序有一个连续运行的线程。该线程是一个ZeroMQ线程并在循环中侦听端口。该应用程序不维护会话。现在,如果我打开浏览器并向apache服务器发送请求,则首次接受数据。现在第二次发送请求时显示内部服务器错误。当我检查错误日志文件以进行回溯时,它显示ZMQError: - 已使用的地址。
apache是否会对浏览器发出的每个请求重新加载应用程序,因为每次都会创建ZeroMQ线程并分配端口,但由于端口已经分配,因此显示错误....
答案 0 :(得分:1)
看起来您的应用程序正在使用zmq绑定到某个端口。
正如您所怀疑的那样,每个请求都可以作为独立进程运行,从而竞争对端口的访问以进行绑定。
可以有所谓的工作者,每个人都运行一个处理http / wsgi请求的进程,每个进程都试图绑定。
您应该重新设计您的应用程序,不要使用bind,但是连接,这可能需要使用zeromq的另一个进程来处理您使用的内容(但最后一行取决于您在应用程序中执行的操作)。