单击按钮即可将Celery任务更改为按需运行



我有一个芹菜任务,它定期运行,并为所有使用特定会计服务的公司获取一些数据。我现在需要点击一个按钮,使该任务按需运行,并且只获取当前公司的数据。

修改的芹菜任务:

@APP.task
def import_data_for_company(company_id):
for integration in settings.INTEGRATIONS:
if integration["owner"]["company_id"] == company_id:
print("omlette du fromage")

Django模板中的当前按钮

{% for integration in settings.INTEGRATIONS %}
{% if company.company_id == integration.owner.company_id %}
<div class="button">
<a class="btn" href="#">Import Data</a>
</div>
{% endif %}
{% endfor %}

我需要从Django模板中触发该任务,并在执行该任务时传递一个公司ID作为参数。但根据这条评论,我无法从Djano模板中传递参数。编写自定义模板标记/筛选器在这里似乎没有帮助。

通过此按钮调用该函数的选项是什么?

必须注意的是,我在这方面还是很幼稚的。

您应该创建一个接受公司id的视图。在该视图中,您将触发import_data_for_company。然后,您可以重定向回初始视图。或者您也可以使用AJAX来触发视图。相应地在模板中添加URL:{% url 'some_name' company.company_id %}

urls.py:

path(
"your_desired_trigger_url/<id:company_id>/",
trigger_company_data,
name="some_name",
),

views.py:

def trigger_company_data(request, company_id):
import_data_for_company(company_id)
return HttpResponseRedirect(reverse("your_initial_view"))

相关内容

  • 没有找到相关文章

最新更新