0
我有一個django視圖,它通過API POST請求將對象ID添加到隊列中。然後,我有一個芹菜任務,使id出列並做一些處理。有時,芹菜任務會拋出一個錯誤,指出該對象不存在。我在視圖中添加了5秒的延遲,並且我再也看不到這個錯誤了。django orm是否立即創建對象
View:
def create(self, request):
user = request.user
serializer = UnpredictedSentenceSerializer(data=request.data)
if serializer.is_valid():
saved_raw_text = UnpredictedSentence.objects.create(
raw_text=serializer.data['raw_text'],
user=user)
prediction.apply_async(
args=[saved_raw_text.pk],
countdown=5
)
print(saved_raw_text.pk)
return Response(status=status.HTTP_200_OK)
else:
return Response(
serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Task:
@task()
def prediction(id):
print(id)
print(type(id))
UnpredictedSentence.objects.get(pk=id)
try:
un_sent = UnpredictedSentence.objects.get(pk=id)
except UnpredictedSentence.DoesNotExist:
un_sent = None
if un_sent:
print(type(un_sent.raw_text))
text = json.loads(un_sent.raw_text)
results = kudos.main(text['raw_text'])
PredictedSentence.objects.create(
cleaned_text=results['cleaned_text'],
raw_text=results['raw_text'],
sentiment=results['sentiment'],
user=un_sent.user)
print(results)
只是一個一般的評論,另外,使用睡眠來解決競爭條件幾乎總是一個壞主意。芹菜任務可以檢查它是否存在,如果不存在,請將它放在隊列中供其他工人使用? – FlipperPA