Przy użyciu Plone 4 pomyślnie utworzyłem zdarzenie subskrybenta, aby wykonać dodatkowe przetwarzanie po zapisaniu niestandardowego typu zawartości. Osiągnąłem to dzięki interfejsowi Products.Archetypes.interfaces.IObjectInitializedEvent
.Uruchamianie zdarzeń subskrybenta Plone asynchronicznie
configure.zcml
<subscriber
for="mycustom.product.interfaces.IRepositoryItem
Products.Archetypes.interfaces.IObjectInitializedEvent"
handler=".subscribers.notifyCreatedRepositoryItem"
/>
subscribers.py
def notifyCreatedRepositoryItem(repositoryitem, event):
"""
This gets called on IObjectInitializedEvent - which occurs when a new object is created.
"""
my custom processing goes here. Should be asynchronous
Jednak dodatkowa obróbka może czasami trwać zbyt długo, a ja zastanawiałem się, czy istnieje sposób, aby uruchomić go w tle tj. asynchronicznie.
Czy można uruchamiać zdarzenia abonenckie asynchronicznie, na przykład podczas zapisywania obiektu?