我试图使用Django消息显示消息,但当@shared_task上发生特定事件时,应该执行此警报。这是我在tasks.py 中的芹菜函数代码
def show_message_in_time(self,response):
while True:
# get_info_to_show() this function will do something
messages.info(response, 'Your email is added successfully!')
sleep(2*60)
这是views.py 上的函数
def index(response):
show_message_in_time.delay(response)
return render(response, "Sales.html", {'zipped_list': objs})
以下是我收到的错误
Exception Value:
Object of type 'WSGIRequest' is not JSON serializable
我曾尝试将WSGIREQest转换为JSON,但这也不起作用。任何帮助都将不胜感激!
问题的最简单解决方案是用您真正需要的WSGIRequest/HttpRequest创建一个字典。
假设您的WSGIREQest具有";用户名";以及";电子邮件";零件。然后,您将索引重构为以下内容:
def index(response):
data = {
"method": response.method,
"username": response["username"],
"email": response["email"]
}
if response.method == "POST":
data["response_data"] = response.POST
if response.method == "GET":
data["response_data"] = response.GET
show_message_in_time.delay(data)
return render(response, "Sales.html", {'zipped_list': objs})
如果你知道这是一种后处理方法,那么最快的测试将是
def index(response):
# POST is a dictionary, so it is definitely serializable
show_message_in_time.delay(response.POST)
return render(response, "Sales.html", {'zipped_list': objs})
免责声明:我从未使用过Django或任何其他网络框架,但我对Celery知之甚少。