我正在为CG制作团队开发资产管理系统,该团队要求每个用户在他们的机器上运行小型服务。系统通过XML-RPC与此服务进行通信,以传输数据并运行其他小任务。客户端服务在特定端口上启动rpc服务器,然后系统尝试使用用户首次登录时发出的HTTP请求中包含的IP地址连接到它。我遇到的问题来自于它运行的事实在多用户环境中。
当有人登录时,他们的bash_profile脚本会启动该服务,然后开始侦听特定端口。如果其他人想要使用该计算机并且不注销先前的用户,而是切换用户,则客户端无法绑定到该端口,因为前一个用户的客户端仍在运行。当新用户登录系统时,系统仍然连接到机器上运行的服务,但这是错误的服务。
为了尝试解决这个问题,我一直在寻找一些在切换用户出现时运行脚本的方法,但到目前为止我还没有找到任何东西。我还认为客户端可以在第一个可用的端口上打开,然后在用户登录时将其自身及其端口通知给服务器。问题在于,此时服务器通过方式启动连接请求中包含的IP地址。我不想在客户端硬编码服务器的ip,因为它很可能在某些时候必须在其他机器上运行。
所有内容都是用Python编写的,并且在没有root的CentOS机器上运行。