【问题标题】:How to run a function in background in django python only when it is called?如何仅在调用 django python 时在后台运行函数?
【发布时间】:2021-11-09 07:35:06
【问题描述】:

我创建了一个电子邮件功能,它将向用户发送访问令牌以进行验证。 这个过程执行时间很短。

所以,我想在后台推送这个功能并通知用户“访问令牌将被邮寄到您的电子邮件 id。请检查您的电子邮件”。这是为了让用户保持更新,而不是在整个任务完成后等待访问令牌通知。

我不想安排,因为这里不需要,而且我想 Django 的 background_task 模块也无济于事。

什么是出路?

【问题讨论】:

  • 发送电子邮件需要多长时间?令人惊讶的是它需要这么长时间才能成为一个问题
  • 有时需要长达 30 秒。
  • 在电子邮件中发送访问令牌??如果您不想使用一些异步队列,那么您可以使用 ajax 来解决这个问题
  • 这种情况下可以使用线程
  • 在发送访问令牌之前,我正在验证用户是否已经处于活动状态或者他是否正在发送重复请求。一旦用户的基本信息得到验证,我们就会发送访问令牌。整个过程需要 30 到 50 秒。

标签: python django django-rest-framework django-celery background-task


【解决方案1】:

你试过celery吗?如果我没记错的话,我认为它正在做你所需要的。

【讨论】:

  • 我不打算使用 celery,因为这不是异步任务,但我会尝试使用 celery 在后台推送该功能。
  • 是的,它非常有用,您可以根据需要使用 ajax 或 socket 跟踪任务进度。
  • 它使用 celery 和它的 .delay() 功能工作。
  • 很高兴知道它正在工作。我认为是时候投票了。
猜你喜欢
  • 2022-11-02
  • 1970-01-01
  • 2015-10-29
  • 2018-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-02
  • 2020-12-12
相关资源
最近更新 更多