rqscheduler docker正在停止,出现时间不匹配错误

2024-05-15 21:44:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我在同一网络中创建了3个Docker

  1. redis队列
  2. rq调度器
  3. 基于Python的docker

redis尝试在调度程序上调度任务时出错

docker ps输出

b18b7d21894f        redis                     "docker-entrypoint.s…"   27 minutes ago      Up 27 minutes       6379/tcp                 test_redis_1
140a7c31b87d        python                    "python3"                13 hours ago        Up 13 hours                                  pyRed5
55dc5bcd3f57        anarchy/rq-scheduler        "rqscheduler --host …"   27 minutes ago      Exited (1) 13 minutes ago                               boring_bohr

我正试图安排定期任务

文件iss.py

from rq_scheduler import Scheduler
from redis import Redis
from datetime import datetime, timedelta,timezone
import pytz
import mail
scheduler = Scheduler(connection=Redis("test_redis_1"))

def get_next_pass():
    x= datetime.now() + timedelta(minutes = 1)
    return x.replace(tzinfo=timezone.utc)
#.strftime("%Y-%m-%dT%H:%M:%SZ")

def send_text_message(time):
    mail.mail()
    scheduler.enqueue_at(time+100, iss.send_text_message,time+100)

文件调度程序.py

from datetime import datetime

from redis import Redis
from rq_scheduler import Scheduler

import iss

scheduler = Scheduler(connection=Redis("test_redis_1")) # Get a scheduler for the "default" queue

next_pass = iss.get_next_pass()

if next_pass:
    print(next_pass)
    next_pass
    print("reached here")
    scheduler.enqueue_at(next_pass, iss.send_text_message,next_pass)

我正在从python docker调用schduler.py。任务将转到rq,但在rq调度程序中失败,错误如下

root@healthbot-build-vm1:~/redis# docker logs 55dc5bcd3f57
19:09:55 Running RQ scheduler...
19:09:55 Checking for scheduled jobs...
19:10:55 Checking for scheduled jobs...
19:11:55 Checking for scheduled jobs...
19:12:55 Checking for scheduled jobs...
19:13:55 Checking for scheduled jobs...
19:14:55 Checking for scheduled jobs...
19:15:56 Checking for scheduled jobs...
19:16:56 Checking for scheduled jobs...
19:17:56 Checking for scheduled jobs...
19:18:56 Checking for scheduled jobs...
19:19:56 Checking for scheduled jobs...
19:20:56 Checking for scheduled jobs...
19:21:56 Checking for scheduled jobs...
19:22:56 Checking for scheduled jobs...
19:23:56 Checking for scheduled jobs...
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/site-packages/rq/utils.py", line 164, in utcparse
    return datetime.datetime.strptime(string, '%Y-%m-%dT%H:%M:%SZ')
  File "/usr/local/lib/python3.5/_strptime.py", line 510, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "/usr/local/lib/python3.5/_strptime.py", line 343, in _strptime
    (data_string, format))
ValueError: time data '2021-01-14T19:22:07.242474Z' does not match format '%Y-%m-%dT%H:%M:%SZ'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/rqscheduler", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.5/site-packages/rq_scheduler/scripts/rqscheduler.py", line 53, in main
    scheduler.run(burst=args.burst)
  File "/usr/local/lib/python3.5/site-packages/rq_scheduler/scheduler.py", line 340, in run
    self.enqueue_jobs()
  File "/usr/local/lib/python3.5/site-packages/rq_scheduler/scheduler.py", line 322, in enqueue_jobs
    jobs = self.get_jobs_to_queue()
  File "/usr/local/lib/python3.5/site-packages/rq_scheduler/scheduler.py", line 271, in get_jobs_to_queue
    return self.get_jobs(to_unix(datetime.utcnow()), with_times=with_times)
  File "/usr/local/lib/python3.5/site-packages/rq_scheduler/scheduler.py", line 254, in get_jobs
    job = Job.fetch(job_id, connection=self.connection)
  File "/usr/local/lib/python3.5/site-packages/rq/job.py", line 294, in fetch
    job.refresh()
  File "/usr/local/lib/python3.5/site-packages/rq/job.py", line 410, in refresh
    self.created_at = to_date(as_text(obj.get('created_at')))
  File "/usr/local/lib/python3.5/site-packages/rq/job.py", line 403, in to_date
    return utcparse(as_text(date_str))
  File "/usr/local/lib/python3.5/site-packages/rq/utils.py", line 167, in utcparse
    return datetime.datetime.strptime(string, '%Y-%m-%dT%H:%M:%S.%f+00:00')
  File "/usr/local/lib/python3.5/_strptime.py", line 510, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "/usr/local/lib/python3.5/_strptime.py", line 343, in _strptime
    (data_string, format))
ValueError: time data '2021-01-14T19:22:07.242474Z' does not match format '%Y-%m-%dT%H:%M:%S.%f+00:00'

Tags: inpyfordatetimelibusrlocalline