SORU
18 Mart 2009, ÇARŞAMBA


Ç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
18 Mart 2009, ÇARŞAMBA


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CorridorDigital

    CorridorDigi

    17 Mayıs 2010
  • Huot Media

    Huot Media

    7 Mayıs 2010
  • Jonathan D.

    Jonathan D.

    3 Kasım 2006