首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在rq队列中放置类方法时出现Python RQ错误

在rq队列中放置类方法时出现Python RQ错误
EN

Stack Overflow用户
提问于 2020-05-31 12:48:56
回答 1查看 875关注 0票数 1

我需要将类方法放到RQ队列中。但它给出了一个错误

这里是worker.py

代码语言:javascript
复制
import os

import redis
from rq import Worker, Queue, Connection

listen = ['high', 'default', 'low']

redis_url = os.getenv('REDISTOGO_URL', 'redis://localhost:6379')

conn = redis.from_url(redis_url)

if __name__ == '__main__':
    with Connection(conn):
        worker = Worker(map(Queue, listen))
        worker.work()

这里是单独文件中的类

代码语言:javascript
复制
import requests
import re

class Robots():
    def __init__(self, url):
        self.url = url


    def get_url(self):
        if self.url.endswith('/'):
            return self.url + "robots.txt" 
        else:
            return self.url + "/robots.txt"


    def get_status_code(self):
        return requests.get(self.get_url()).status_code

这里是app.py

代码语言:javascript
复制
import time
from rq import Queue
from worker import conn
from rob import Robots
url = 'http://heroku.com'
q = Queue(connection=conn)

task = q.enqueue(Robots(url).get_status_code())
print (task.result)
time.sleep(4)
print (task.result)

当我运行代码时,它会出现一个错误。

代码语言:javascript
复制
File "app.py", line 8, in <module>
    task = q.enqueue(Robots(url).get_status_code())
  File "/home/atom/Desktop/Python/Tests/herokurq/lib/python3.8/site-packages/rq/queue.py", line 381, in enqueue
    depends_on, job_id, at_front, meta, args, kwargs) = Queue.parse_args(f, *args, **kwargs)
  File "/home/atom/Desktop/Python/Tests/herokurq/lib/python3.8/site-packages/rq/queue.py", line 353, in parse_args
    if not isinstance(f, string_types) and f.__module__ == '__main__':

当我把简单的函数而不是类方法放在--一切都很好的时候。但我得把这个方法。它给出了一个错误。

EN

回答 1

Stack Overflow用户

发布于 2020-05-31 13:21:42

我发现了一个问题,我应该使用q.enqueue=.get_status_code代替q.enqueue(Robots(url).get_status_code())

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62116471

复制
相关文章

相似问题

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