我正在尝试使用RQ创建一个后台作业:
import django_rq
def _send_password_reset_email_async(email):
print(email)
# Django admin action to send reset password emails
def send_password_reset_email(modeladmin, request, queryset):
for user in queryset:
django_rq.enqueue(_send_password_reset_email_async, user.email)
send_password_reset_email.short_description = 'Send password reset email'我一直收到这个错误,似乎我在做一些愚蠢的事情?
Traceback (most recent call last):
File "/home/lee/Code/cas/venv/lib/python3.4/site-packages/rq/worker.py", line 568, in perform_job
rv = job.perform()
File "/home/lee/Code/cas/venv/lib/python3.4/site-packages/rq/job.py", line
495, in perform
self._result = self.func(*self.args, **self.kwargs)
File "/home/lee/Code/cas/venv/lib/python3.4/site-packages/rq/job.py", line 206, in func
return import_attribute(self.func_name)
File "/home/lee/Code/cas/venv/lib/python3.4/site-packages/rq/utils.py", line 151, in import_attribute
return getattr(module, attribute)
AttributeError: 'module' object has no attribute '_send_password_reset_email_async‘
发布于 2016-04-01 19:28:06
在我遇到这个错误时添加评论:
当您更改代码时,Django dev dev服务器会动态重新加载,但rqworker进程不会。因此,如果您添加/修改一个任务并立即调用它,当新代码(您的web代码)尝试调用旧代码( RQ任务)时,您可能会遇到此错误。
停止/重新启动rqworker,就可以了。
发布于 2019-05-17 16:03:19
因此,您实际需要做的是导入某个文件中的模块,然后对其执行延迟。@MrE,所以没有必要在初始化.py文件中导入它
发布于 2015-09-23 16:05:29
如何将_send_password_reset_email_async包含在reset_email函数中-
def send_password_reset_email(modeladmin, request, queryset):
def _send_password_reset_email_async(email):
print(email)
for user in queryset:
django_rq.enqueue(_send_password_reset_email_async, user.email)
send_password_reset_email.short_description = 'Send password reset email'https://stackoverflow.com/questions/32733934
复制相似问题