2009-04-10 10 views
4

私はdjangoサイトを持っていて、フィードの一部はFeedBurnerによって公開されています。私は特定のモデルのインスタンスを保存するたびにFeedBurnerにpingをしたいと思います。 FeedBurnerのWebサイトには、XML-RPC pingのメカニズムが使われていると言われていますが、実装方法に関する多くの文書は見つかりません。Django AppのPing FeedBurner

django/PythonでXML-RPC pingを実行する最も簡単な方法は何ですか?

答えて

12

モデルが保存された後、あなたはコールバックを得るために、Djangoのsignals機能を使用することができます。

import xmlrpclib 
from django.db.models.signals import post_save 
from app.models import MyModel 

def ping_handler(sender, instance=None, **kwargs): 
    if instance is None: 
     return 
    rpc = xmlrpclib.Server('http://ping.feedburner.google.com/') 
    rpc.weblogUpdates.ping(instance.title, instance.get_absolute_url()) 

post_save.connect(ping_handler, sender=MyModel) 

を明らかにあなたのためにどのような作品でこれを更新する必要があり、あなたが別のイベントをしたい場合は、アプリを読んで信号を読んでください。

+1

ただ、人々はGoogleがFeedBurnerのを取得しているため、新しいURLがhttp://ping.feedburner.google.comであることを知らせたいです。 – Apreche

+1

サーバURLの最後にスラッシュを追加する必要があります。そうしないと、RPC呼び出しはping.feedburner.google.com/RPC2に行き、404エラーになります。 – iamamac

+0

@lamamacスラッシュを追加しました。それをキャッチするためにありがとう! – tghw

1

多分そのようSTH:

import xmlrpclib 
j = xmlrpclib.Server('http://feedburnerrpc') 
reply = j.weblogUpdates.ping('website title','http://urltothenewpost')