2010-09-22 21 views
9

Diğer posterler bu forumda daha önce Django uygulamanızın büyük ve yönetilemez hale gelmeye başladığı zaman bunu çeşitli uygulamalara bölmeniz gerektiğini söylediler. Şu an o noktadayım. Bu uygulamalar arasında iletişime izin vermek için en iyi yöntemler nelerdir?Birden çok Django uygulaması birbiriyle nasıl iletişim kurmalı?

Uygulamalarımdan biri (buna İşlemci adını verelim) çok büyük veri kümeleri işliyor. Bir saat sonra diğer uygulama için az miktarda yeni veri üretir. Bu diğer uygulama (ona Presenter diyoruz) verileri kullanıcılara gösterir.

İşlemci, yeni verileri Presenter'a nasıl vermelidir? Presenter'ın modelinin parçalarını basit bir şekilde ithal ederse, Presenter'ın veritabanında kayıt oluşturabilir ve kaydedebilir? Bu bana sıkı bir bağlanma gibi görünüyor. Veya Sunum'da bir işlevi çağırarak verileri iletmeli mi? Veya verileri hem İşlemci hem de Sunucunun bildiği bir çeşit veri deposuna koyar mısınız?

Bu sorunu genellikle nasıl çözersiniz?

/Martin

cevap

4

Kesinlikle Sunucu uygulamasında ithal İşlemi Yapanın modelleri için gider. Bu şekilde, örneğin, fazladan kullanıcı bilgisi ekleyebilirsiniz: ForeignKeyField modeline sahip UserPreferences modeliniz django.contrib.auth.models.User. İki uygulamanız arasında bunu yaparken kötü bir hisiniz daha az olabilir, çünkü django.contrib "standart kütüphane" dir, ancak yine de doğrudan bağlantıdır.

Uygulamalarınız birleştirilirse, kodunuzu yansıtacak şekilde eşleştirmeniz gerekir. Bu, açıklığın örtük olmaktan daha iyi olduğu fikrini izler, değil mi?

import processor_x.models 
PRESENTER_PROCESSOR_MODELS = presenter_x.models 
:

ise ancak İlgilendiğiniz biraz daha genel bir şey tasarlarken, bir ayarı olarak belirli modellerde saklayabilirsiniz (yani farklı türde İşlemcileri için birden Sunucu uygulaması örneklerini kullanacağız) senin Sunucu modellerinde Sonra

:

from django.conf import settings 
class Presenter: 
    processor = models.ForeignKey(settings.PRESENTER_PROCESSOR_MODELS) 

Uyarı: Bu teşebbüs asla, ama sadece dizeleri, küpe veya listeleri olmaları ayarlara bir sınırlama hatırlamıyorum!

+0

"Açık, örtük olmaktan iyidir" - iyi bir nokta, bu bana Presenter'ın modelinin bir kısmını İşlemci uygulamasına aktarma konusunda daha iyi hissettiriyor. –

İlgili konular