2

I want to use rq_scheduler library in my app and this is my code :

import telepot
import sys
import time
import schedule
import datetime
from redis import Redis
from rq_scheduler import Scheduler


scheduler = Scheduler(connection=Redis())



def handle():
    print("hello")

def main():
    scheduler.enqueue_at(datetime(2017, 9, 11, 22, 41),handle)


if __name__ == '__main__':
   main()

and I get this : update :

    Traceback (most recent call last):
  File "***\__init__.py", line 22, in <module>
    main()
  File "***\__init__.py", line 18, in main
    scheduler.enqueue_at(datetime(2017, 9, 11, 22, 41),handle)
TypeError: 'module' object is not callable

1- where is my mistake? why am I getting this ?

faeze saghafi
  • 650
  • 10
  • 25

1 Answers1

2

datetime is a module that also declares a class named datetime.

scheduler.enqueue_at(datetime.datetime(2017, 9, 11, 22, 41),handle)

or

from datetime import datetime
...
schedule.enqueue_at(datetime(2017, 9, 11, 22, 41), handle)

In an ideal world, the class would have a PEP-8-compliant name (i.e., datetime.DateTime) to avoid the confusion.

chepner
  • 497,756
  • 71
  • 530
  • 681