在pyzmq中,如何停止代理?

2024-09-27 00:13:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个防火墙后面的服务器和一个公共可用的web服务器从服务器请求信息。我使用pyzmq来管理后端和web前端之间的通信。当他们在本地通信时,这项工作没有代理。它在使用代理时起作用。我可以启动一个ThreadProxy,但如何停止它呢?在

import zmq
from zmq.devices import ThreadProxy

class MyProxy:
    def __init__(self)
        p = ThreadProxy(zmq.ROUTER, zmq.DEALER) # Not using mon
        p.setsockopt_in(zmq.IDENTITY, b'ROUTER')
        p.setsockopt_out(zmq.IDENTITY, b'DEALER')
        p.bind_in('tcp://*:5550')
        p.connect_out('tcp://localhost:5550')
        self._proxy = p
    def start(self)
        self._proxy.start()
    def stop(self)
        ???

我怎么才能让那个代理停止呢。join只是等待,因为代理被阻止或没有理由停止。我没有.term()的上下文。在

我想在linux守护进程中运行它,所以“kill”不是最优雅的解决方案,也不能让我控制我要找的代理。在


Tags: inimportself服务器web代理defzmq
1条回答
网友
1楼 · 发布于 2024-09-27 00:13:25

答案是代理会自动关闭。在

我想我的问题是理解问题。代理作为一个守护进程启动(默认),我不知道这对Python意味着什么。当所有非守护进程线程完成时,程序结束。在这种情况下,这意味着当我的程序的其余部分停止时代理停止。我不需要明确地停止它。在

在我构建Linux服务时,这正是我想要的功能。在主线程中,我将启动代理,做一些事情(比如监视代理)或什么都不做,当我想停止服务时,主线程将结束,关闭,代理将自行消亡。在

相关问题 更多 >

    热门问题