首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RQ模块:“AttributeError”对象没有属性

RQ模块:“AttributeError”对象没有属性
EN

Stack Overflow用户
提问于 2015-09-23 15:52:57
回答 8查看 4.1K关注 0票数 1

我正在尝试使用RQ创建一个后台作业:

代码语言:javascript
复制
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'

我一直收到这个错误,似乎我在做一些愚蠢的事情?

代码语言:javascript
复制
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

EN

回答 8

Stack Overflow用户

发布于 2016-04-01 19:28:06

在我遇到这个错误时添加评论:

当您更改代码时,Django dev dev服务器会动态重新加载,但rqworker进程不会。因此,如果您添加/修改一个任务并立即调用它,当新代码(您的web代码)尝试调用旧代码( RQ任务)时,您可能会遇到此错误。

停止/重新启动rqworker,就可以了。

票数 10
EN

Stack Overflow用户

发布于 2019-05-17 16:03:19

因此,您实际需要做的是导入某个文件中的模块,然后对其执行延迟。@MrE,所以没有必要在初始化.py文件中导入它

票数 2
EN

Stack Overflow用户

发布于 2015-09-23 16:05:29

如何将_send_password_reset_email_async包含在reset_email函数中-

代码语言:javascript
复制
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'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32733934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档