线程类型错误:'模块'对象不可调用

时间:2018-05-17 06:22:37

标签: python python-3.x

我每隔一段时间安排两个python作业。 activity_url_collectorstorage_data_collector是与.py相同目录中的index.py个文件。

以下是 index.py

import schedule
import time
import psycopg2
import threading
import activity_url_collector
import storage_data_collector

def main():


    def run_threaded(job_func):
        job_thread = threading.Thread(target=job_func)
        job_thread.start()

    schedule.every(3).minutes.do(run_threaded, activity_url_collector)
    schedule.every(3).minutes.do(run_threaded, storage_data_collector)

    schedule.run_all()

    print('Post-Processing-Application is running')

    while True:
            schedule.run_pending()
            time.sleep(1)    

if __name__=="__main__":
    main()

详细错误:

Traceback (most recent call last):
  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.5/threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
TypeError: 'module' object is not callable

这里可能出现什么问题?感谢。

1 个答案:

答案 0 :(得分:2)

您正尝试在线程中运行activity_url_collectorstorage_data_collector

查看你的导入都是模块(Python文件),它们可以直接由解释器运行,但它们不是你需要的“callables”。

您可以在线程中运行函数,方法或任何实现__call__的对象。作为一种解决方案,您可以向模块中添加main()函数来执行实际工作,并使用activity_url_collector.main作为线程的目标。