【问题标题】:problems using cron to run a pymongo script使用 cron 运行 pymongo 脚本的问题
【发布时间】:2011-11-09 10:54:49
【问题描述】:

我正在运行一个简单的 python 脚本,将数据发送到 mongodb

#!/usr/bin/env python

import sys
import time
from datetime import datetime
import pymongo
from pymongo import Connection

today = { 'date and time' : datetime.today() }

connection = Connection()
db = connection.tests
collection = db.times

collection.insert(today)

我正在尝试使用 cron 每分钟安排一次。我已经使用 crontab 来设置这个

* * * * * /Users/MyUser/XX/YY/ZZ/timetest.py

我可以使用正确目录中的python timetest.py 完美地执行此操作;但是该程序仍未自行运行。我觉得我离让它工作很近了,有人可以帮我吗?

【问题讨论】:

  • 在 shell 提示符下运行 /Users/MyUser/XX/YY/ZZ/timetest.py 有效吗?
  • 不,这不起作用。输出是“找不到命令”。
  • 你试过python /Users/MyUser/XX/YY/ZZ/timetest.py吗?
  • 做到了。太感谢了。我没有意识到您可以将 python 调用放在 crontab 中的路径之前。
  • 鉴于您的 2 个 cmets - 我怀疑您需要使脚本可执行 ls -l /Users/MyUser/XX/YY/ZZ/timetest.py 的作用是什么

标签: python mongodb cron crontab pymongo


【解决方案1】:

cron 环境很可能与您的用户环境不匹配。在 cron 中,您可以在 crontab 中设置路径变量,例如

PATH=$PATH:/usr/bin
* * * * * /Users/MyUser/XX/YY/ZZ/timetest.py

或者你可以在你的脚本上显式调用 python 二进制文件

* * * * * /usr/bin/python /Users/MyUser/XX/YY/ZZ/timetest.py

或者您可以在脚本中设置 shebang 行以显式引用 python 二进制文件(如果您曾经使用 virtualenv,这可能是不可取的)

#!/usr/bin/python
...

【讨论】:

    猜你喜欢
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 2011-05-28
    • 1970-01-01
    • 2011-02-08
    相关资源
    最近更新 更多