所以我有一个预定的芹菜节拍任务(celery.py):
@app.on_after_configure.connect
def setup_periodic_tasks(sender,
**kwargs):
sender.add_periodic_task(10.0, test_event, name='test')
以及任务(events/tasks.py):
@shared_task
def test_event():
from .models import Event
Event.objects.create()
创建事件时,会触发接收器,该接收器应向通道组(events/receivers.py)发送消息:
@receiver(post_save, sender=Event)
def event_post_add(sender, instance, created, *args, **kwargs):
if created:
print("receiver fired")
Group("test").send({
"text": json.dumps({
'type': 'test',
})
})
主要问题是接收器在 celery beat 过程中被触发,并且没有通过 django 通道发送任何内容。没有错误消息,什么都没有,它根本没有被发送。
如何整合这两者,以便能够从 celery 后台进程向通道发送消息?