0
我試圖按照解釋here的方法來讓一個工作人員運行一些異步函數。rqworker從django-rq沒有收到任務
這意味着,在我的tasks.py
文件我有:
from django_rq import job
@job
def long_function(one_list):
#many stuff that should be done asynchrounously
然後在我的views.py
文件:
from .tasks import long_function
def render_function(request):
#some code to get one_list
long_function.delay(one_list)
#some more code to render the page
return render(request, 'results_page.html', context)
就目前而言,我在本地做測試。 因此,我打開了兩個終端:一個運行python manage.py runserver
,另一個運行python manage.py rqworker default
。
因此,當我在瀏覽器中加載'results_page.html'時,我期望任務排隊並開始與rqworker一起運行。問題是,這種情況只是一些隨機的時間,而在其餘的終端rqworker只是表明:
*** Listening on default...
Sent heartbeat to prevent worker timeout. Next one should arrive within 420 seconds.
Sent heartbeat to prevent worker timeout. Next one should arrive within 420 seconds.
我的第一個想法是,因爲我同時使用兩個不同的終端,連接不正確完成。但是,我認爲這沒有意義,因爲有時異步任務確實會運行。
爲什麼工人有時沒有看到任務?
它可能與此有關:https://github.com/ui/django-rq/issues/193 – J0ANMM