Python RQ属性错误:';模块';对象没有属性
我正在尝试使用RQ创建一份背景工作:Python RQ属性错误:';模块';对象没有属性,python,django,python-rq,django-rq,Python,Django,Python Rq,Django Rq,我正在尝试使用RQ创建一份背景工作: import django_rq def _send_password_reset_email_async(email): print(email)
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
“将
\u发送\u密码\u重置\u电子邮件\u异步
封装在重置\u电子邮件功能中如何-
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'
将
\u发送\u密码\u重置\u电子邮件\u异步
封装在重置电子邮件功能中如何-
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'
添加注释,因为我也遇到此错误: 当您更改代码时,Django dev Web服务器会动态地重新加载,但rqworker进程不会。因此,如果您添加/修改一个任务并立即调用它,那么当新代码(您的web代码)尝试调用旧代码(RQ任务)时,您可能会遇到此错误
停止/重新启动rqworker,您就没事了。在我也遇到此错误时添加注释: 当您更改代码时,Django dev Web服务器会动态地重新加载,但rqworker进程不会。因此,如果您添加/修改一个任务并立即调用它,那么当新代码(您的web代码)尝试调用旧代码(RQ任务)时,您可能会遇到此错误
停止/重新启动rqworker,您就可以了。在中复制@richardbarran的注释 当您更改代码时,Rqworker不会动态重新加载,但是 如果您添加/修改任务,Django-dev-webserver将执行此操作& 立即调用它,您可能会遇到此错误作为新代码(您的 web代码)尝试调用旧代码(RQ任务) 停止/重新启动rqworker,您就没事了
复制中@richardbarran的评论 当您更改代码时,Rqworker不会动态重新加载,但是 如果您添加/修改任务,Django-dev-webserver将执行此操作& 立即调用它,您可能会遇到此错误作为新代码(您的 web代码)尝试调用旧代码(RQ任务) 停止/重新启动rqworker,您就没事了
我有一个类似的问题,并且确保在应用程序的
\uuu init\uuuuuuuuuuuuuuuuuuuy.py
中导入模块修复了这个问题。我有一个类似的问题,并且确保在应用程序的\uuu init\uuuuuuuuuuuuuuuuuy.py
中导入模块修复了这个问题。,实际上,您需要做的是在某个文件中导入模块,然后对其执行延迟。
@MrE,因此无需将其导入到init.py文件中,因此,您实际需要做的是将模块导入到某个文件中,然后对其执行延迟。
@MrE,因此无需将其导入init.py文件尝试将函数写入另一个文件,将其作为模块导入
# in my_utility.py
def send_password_reset_email_async(email):
print(email)
然后
尝试将函数写入另一个文件,将其作为模块导入
# in my_utility.py
def send_password_reset_email_async(email):
print(email)
然后
在我的例子中,我没有将任务放在tasks.py文件中…在我的例子中,我没有将任务放在tasks.py文件中