将类方法放入rq队列时出现Python rq错误

将类方法放入rq队列时出现Python rq错误,python,python-rq,Python,Python Rq,我需要在RQ队列上放置一个类方法。但它给出了一个错误 这是工人。py 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__

我需要在RQ队列上放置一个类方法。但它给出了一个错误

这是工人。py

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()
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)
这是单独文件中的类

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

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()
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)
当我运行代码时,它会给出一个错误

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__':
文件“app.py”,第8行,在
task=q.enqueue(机器人(url).get_status_code())
文件“/home/atom/Desktop/Python/Tests/herokurq/lib/python3.8/site packages/rq/queue.py”,第381行,在队列中
取决于,作业id,在前面,元,参数,kwargs)=队列。解析参数(f,*args,**kwargs)
parse_args中的文件“/home/atom/Desktop/Python/Tests/herokurq/lib/python3.8/site packages/rq/queue.py”,第353行
如果不是isinstance(f,字符串类型)和f.。\uuuuu模块\uuuuu=='\uuuuu主\uuuu':
当我用简单函数代替类方法时,一切都很好。但我需要把方法。它给出了一个错误

我发现了问题所在
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__':
我应该使用task=q.enqueue(Robots(url).get\u status\u code) 我发现了问题,而不是task=q.enqueue(Robots(url).get\u status\u code())

我应该使用task=q.enqueue(Robots(url).get\u status\u code) 而不是task=q.enqueue(Robots(url.get_status_code())