Çalışan bir python ile iletişim daemon
Bir daemon olarak çalışan küçük bir Python uygulaması yazdım. Diş çekme ve sıraları kullanır.
Çalışırken onunla bağlantı kurabiliyorum, bu uygulama değiştirme için genel yaklaşımlar arıyorum. Çoğunlukla sağlık izleyebilmek istiyorum.
Özetle, böyle bir şey yapmak mümkün olmak istiyorum
python application.py start # launches the daemon
Sonra gelip böyle bir şey yapmak mümkün olmak istiyorum
python application.py check_queue_size # return info from the daemonized process
Açık olmak gerekirse, herhangi bir sorun Django-ilham sözdizimi uygulama yok. Nasıl yapılacağı hakkında bir fikrim yok ne cini ele yazmak ve bu sinyallere yanıt nasıl daemonized süreci (başlangıç) sinyal gönderme, ya da için.
Gibi, genel yaklaşımlar arıyorum yukarıda dedim. Şu anda görebildiğim tek tek daemon sürekli ihtiyacı olabilecek her şeyi bir günlük dosyası için söylüyor, ama bu konuda gitmek için daha az dağınık bir yolu vardır umarım.
GÜNCELLEME:Vay canına, harika cevapları var. Çok teşekkür ederim. Pyro ve web hem de bakacağım sanırım.py/Werkzeug yaklaşımlar, Çarpık beri bu noktada ısırmak istiyorum biraz daha. Bir sonraki kavramsal sorun, sanırım, onları asılı olmadan işçi konuları konuşmak için nasıl.
Tekrar teşekkürler.
CEVAP
Başka bir yaklaşım:* *8 (Python nesneleri uzak) kullanın.
Pyro temelde uzaktan çağrılabilir hizmetleri olarak Python nesne örneklerini yayınlamak için izin verir. Seni tarif kesin bir amaç için Pyro kullandım ve çok başarılı buldum.
Varsayılan olarak, Pyro sunucu programı her yerden bağlantıları kabul eder. Bu sınır, ya da bir bağlantı doğrulayıcı (belgelerine bakın) kullanın, ya da sadece yerel bağlantıları dinlemek için Daemon
kurucu host='127.0.0.1'
kaynağı.
Örnek Pyro belgelerine kodu:
Server
import Pyro.core class JokeGen(Pyro.core.ObjBase): def __init__(self): Pyro.core.ObjBase.__init__(self) def joke(self, name): return "Sorry " name ", I don't know any jokes." Pyro.core.initServer() daemon=Pyro.core.Daemon() uri=daemon.connect(JokeGen(),"jokegen") print "The daemon runs on port:",daemon.port print "The object's uri is:",uri daemon.requestLoop()
İstemci
import Pyro.core # you have to change the URI below to match your own host/port. jokes = Pyro.core.getProxyForURI("PYROLOC://localhost:7766/jokegen") print jokes.joke("Irmen")
Benzer başka bir proje RPyC. RPyC denemedim.
Çalışan bir Python yığın izlemesi uygu...
Utf-8 kodlaması ile çalışan Python kay...
Nasıl bir python betiği bir hizmet ya ...
Nasıl Python kullanırken çıkış kodu al...
Otomotiv: Başka bir MySQL daemon zaten...