首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RQ作业排队但未运行

RQ作业排队但未运行
EN

Stack Overflow用户
提问于 2021-03-16 19:11:08
回答 1查看 2.2K关注 0票数 0

我在Python-RQ的作业排队方面有问题,作业似乎排队很好,但它们没有运行、崩溃或任何他们必须做的事情。

我正在做的过程如下:

  1. 在本地主机上运行redis服务器:
代码语言:javascript
复制
loren@RONDAN1:/mnt/c/Users/rondan$ sudo service redis-server restart
[sudo] password for loren:
Stopping redis-server: redis-server.
Starting redis-server: redis-server.
loren@RONDAN1:/mnt/c/Users/rondan$ rq info
default      | 0
1 queues, 0 jobs total

72a81f7d4cde4e7c865b178772766aef (RONDAN1 95): idle default
1 workers, 1 queues

Updated: 2021-03-16 19:26:52.459427
  1. 在其他bash上运行员工:
代码语言:javascript
复制
loren@RONDAN1:/mnt/c/Users/rondan$ rq worker --with-scheduler
19:26:42 Worker rq:worker:72a81f7d4cde4e7c865b178772766aef: started, version 1.7.0
19:26:42 Subscribing to channel rq:pubsub:72a81f7d4cde4e7c865b178772766aef
19:26:42 *** Listening on default...
19:26:42 Trying to acquire locks for default
19:26:42 Scheduler for default started with PID 98
19:26:42 Cleaning registries for queue: default
  1. 运行我的python演示代码(此代码在异步方式中不使用redis队列):

main.py

代码语言:javascript
复制
import lightquery as lq
from datetime import datetime, timedelta
import time
from redis import Redis
from rq import Queue

queue = Queue(connection=Redis())


def queue_tasks():
    queue.enqueue(lq.print_task, 5)
    queue.enqueue_in(timedelta(seconds=10), lq.print_numbers, 5)


def main():
    queue_tasks()

if __name__ == "__main__":
    main()

lightquery.py

代码语言:javascript
复制
import time

def print_task(seconds):
    print("Starting task")
    for num in range(seconds):
        print(num, ". Hello World!")
        time.sleep(1)
    print("Task completed")


def print_numbers(seconds):
    print("Starting num task")
    for num in range(seconds):
        print(num)
        time.sleep(1)
    print("Task to print_numbers completed")
  1. 运行代码后,执行将正确结束,作业将排队:
代码语言:javascript
复制
loren@RONDAN1:/mnt/c/Users/rondan$ rq worker --with-scheduler
19:26:42 Worker rq:worker:72a81f7d4cde4e7c865b178772766aef: started, version 1.7.0
19:26:42 Subscribing to channel rq:pubsub:72a81f7d4cde4e7c865b178772766aef
19:26:42 *** Listening on default...
19:26:42 Trying to acquire locks for default
19:26:42 Scheduler for default started with PID 98
19:26:42 Cleaning registries for queue: default
19:28:43 default: lightquery.print_task(5) (02a07849-64b5-4f44-8e0b-89bb466110ee)

在将作业添加到作业后,我尝试显示作业队列,并打印一个空数组(也许这可以帮助您给出解决方案)。

编辑的

代码语言:javascript
复制
loren@RONDAN1:/mnt/c/Users/rondan$ sudo service redis-server restart
Stopping redis-server: redis-server.
Starting redis-server: redis-server.
loren@RONDAN1:/mnt/c/Users/rondan$ rq info
default      | 0
1 queues, 0 jobs total

0 workers, 1 queues

Updated: 2021-03-17 07:59:13.587043
loren@RONDAN1:/mnt/c/Users/rondan$
代码语言:javascript
复制
loren@RONDAN1:/mnt/c/Users/rondan$ rq worker --with-scheduler
08:00:15 Worker rq:worker:b1fcdaaf1c224e239d28f9fdf8509a1a: started, version 1.7.0
08:00:15 Subscribing to channel rq:pubsub:b1fcdaaf1c224e239d28f9fdf8509a1a
08:00:15 *** Listening on default...
08:00:15 Trying to acquire locks for default
08:00:15 Scheduler for default started with PID 65
08:00:15 Cleaning registries for queue: default
代码语言:javascript
复制
loren@RONDAN1:/mnt/c/Users/rondan$ rq info
default      | 0
1 queues, 0 jobs total

b1fcdaaf1c224e239d28f9fdf8509a1a (RONDAN1 62): idle default
1 workers, 1 queues

Updated: 2021-03-17 08:02:29.590837
EN

回答 1

Stack Overflow用户

发布于 2021-03-21 19:09:16

问题是我导入模块的方式..。

使用

代码语言:javascript
复制
from lightquery import print_task
...
queue.enqueue(print_task, 5)

而不是:

代码语言:javascript
复制
import lightquery as lq
...
queue.enqueue(lq.print_task(), 5)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66661905

复制
相关文章

相似问题

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