J'ai un serveur derrière un pare-feu et un serveur web publiquement disponible demandant des informations du serveur. J'utilise pyzmq pour gérer la communication entre le backend et le web frontal. Ce travail sans proxy en place, quand ils communiquent localement. Cela fonctionne en utilisant le proxy. Je peux démarrer un ThreadProxy, mais comment l'arrêter?Dans pyzmq, comment arrêtez-vous un proxy?
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)
???
Comment puis-je demander à ce proxy d'arrêter? .join attend juste, car le proxy est bloqué ou n'a aucune raison d'arrêter. Je n'ai pas de contexte pour .term(). Je voudrais lancer ceci à l'intérieur d'un démon linux, donc "kill" n'est pas la solution la plus élégante, et ne me donne pas non plus le contrôle sur le proxy que je cherche.
En supposant que le proxy se comporte de la même manière qu'un périphérique normal, il meurt lorsque le contexte se ferme. Faire quelque chose comme 'myProxy.context_factory(). Term()' finira par arrêter le proxy manuellement, bien que laisser la garbage collection le faire pour vous fonctionne bien aussi. – FirefoxMetzger