【问题标题】:python multithreading issue in cronjobcronjob中的python多线程问题
【发布时间】:2019-10-25 04:33:13
【问题描述】:

我有一个使用ThreadPool 进行多线程处理的python 程序。该程序是 shell 脚本中的一个步骤。当我在命令行上手动执行 shell 脚本时,整个流程按预期工作。但是,当我将 shell 脚本作为 cronjob 执行时,似乎流程在 python 多线程步骤完全完成之前进入了下一步。

在 python 程序中,我确实调用了 AsyncResult.get(timeout) 来等待所有结果返回,然后再继续。

【问题讨论】:

标签: python multithreading cron threadpool


【解决方案1】:

也可以通过batch(1) 运行您的程序(参见命令man batch 的输出)。如果可以,但 cron 版本不行,那么几乎可以肯定是您的环境变量设置有问题。要验证这一点,请从交互式 shell 运行 printenv 以检查那里的环境。然后在 crontab 中执行相同的操作(您只需为其临时设置一个额外的 cron 条目)。在调用 Python 之前尝试在 shell 脚本中设置变量。

另一方面,如果它也不能通过batch(1) 工作,则可能与您的代码已打开的文件有关。尝试使用从 /dev/null 重定向的输入和输出到一个文件来运行你的 shell 脚本:

$ /usr/local/bin/myscript </dev/null >|/tmp/outfile.txt 2>&1

【讨论】:

    【解决方案2】:

    尝试在您的crontab 中设置"TERM=xterm"(或您拥有的任何环境变量,通过终端上的命令“env”找出)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      相关资源
      最近更新 更多