V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
chaoyj
V2EX  ›  问与答

被 Cron 的执行搞迷糊了!

  •  
  •   chaoyj · 2014-08-09 20:40:09 +08:00 · 4005 次点击
    这是一个创建于 3759 天前的主题,其中的信息可能已经有所发展或是发生改变。
    SAE环境下,需要每分钟执行一次数据库操作。
    配置好Cron文件。
    日志返回GET /cron HTTP/1.0 301 0 "-" "SAE/cron-nooffset"
    但是执行就是不成功(数据库无操作)。

    把代码最简化:
    from mysite.shelves.models import record
    def test(request):
    into = record(itemid='111',recordtime = '2014-08-14 19:30:59',recordinfor ='cron do it',plan_id='9')
    into.save()
    依然不行。

    网上寻找的答案普遍反映是环境和变量的问题。
    我不知道该怎么办了!
    22 条回复    2014-08-10 20:11:41 +08:00
    izoabr
        1
    izoabr  
       2014-08-09 20:44:16 +08:00   ❤️ 1
    那你有没有排除掉环境变量的问题呢?
    chaoyj
        2
    chaoyj  
    OP
       2014-08-09 20:49:13 +08:00
    @izoabr 因为担心变量问题,所以把代码中变量都换成常量测试。
    clino
        3
    clino  
       2014-08-09 21:05:05 +08:00 via Android   ❤️ 1
    @chaoyj 楼上说的是环境变量,不是你代码里的变量
    chaoyj
        4
    chaoyj  
    OP
       2014-08-09 21:15:36 +08:00
    @clino 整个执行过程中没有涉及到环境变量的问题。
    chaoyj
        5
    chaoyj  
    OP
       2014-08-09 21:33:17 +08:00
    返回HTTP 为什么会是301呢!
    izoabr
        6
    izoabr  
       2014-08-09 21:42:58 +08:00   ❤️ 1
    @chaoyj 你这个应该是用了django的框架吧,看是不是from mysite导入record的时候就导入不进来,找不到。
    你试试脚本里写个测试文件,测试下成功状态的返回是不是200,301可能是失败跳转。
    churchmice
        7
    churchmice  
       2014-08-09 21:58:21 +08:00   ❤️ 1
    感觉就是$PATH之类的玩意没设好
    juicy
        8
    juicy  
       2014-08-09 22:27:33 +08:00   ❤️ 1
    我最近也有遇到crontab的环境变量问题, 还特意写了篇小文章 http://melon.github.io/blog/2014/08/08/env-for-crontab/ , 没有研究过楼主所用的语言, 但愿文章会对你有点帮助
    jakes
        9
    jakes  
       2014-08-09 22:36:26 +08:00   ❤️ 1
    页面应该没有正常访问。你自己访问一下网页看一下正不正常。
    chaoyj
        10
    chaoyj  
    OP
       2014-08-09 22:51:56 +08:00
    自己访问完全正常,就是丢到Cron里运行不起来。
    chaoyj
        11
    chaoyj  
    OP
       2014-08-09 22:57:02 +08:00
    @izoabr
    from mysite 已经注释掉了
    现在文件只有一句:
    def test(request):
    into='hello'

    自己访问200正常,但是SAE的日志中心都是301.
    urls.py中如果注释掉信息的话,会正常返回404。

    这也太奇怪了吧,没有变量,为什么会是301呢!
    chaoyj
        12
    chaoyj  
    OP
       2014-08-09 23:04:59 +08:00
    @juicy 谢谢,我看下
    izoabr
        13
    izoabr  
       2014-08-09 23:41:20 +08:00   ❤️ 1
    @chaoyj 你这个URL是不是走了django的中间件啊?中间件是不是有要求他做认证之类的?你自己用wget命令试一下在没有任何cookie和session之类的环境试试。
    em70
        14
    em70  
       2014-08-10 03:00:16 +08:00 via Android   ❤️ 1
    定时器的权限和shell是不一样的,检查一下
    ivanlw
        15
    ivanlw  
       2014-08-10 09:42:38 +08:00 via iPhone   ❤️ 1
    这个Cron和crontab是一个东西吗
    ccbikai
        16
    ccbikai  
       2014-08-10 10:19:00 +08:00 via iPhone   ❤️ 1
    贴出cron配置看看
    chaoyj
        17
    chaoyj  
    OP
       2014-08-10 13:28:51 +08:00
    @ccbikai
    name: jdao
    version: 1

    cron:
    - description: test
    url: /test
    schedule: every 1 mins
    clino
        18
    clino  
       2014-08-10 14:35:54 +08:00 via Android   ❤️ 1
    建议在cron里把stdio都重定向到log文件估计就明白了,注意stderr也要重定向
    niseter
        19
    niseter  
       2014-08-10 17:07:47 +08:00 via Android   ❤️ 1
    输出cron的执行结果分析下原因
    chaoyj
        20
    chaoyj  
    OP
       2014-08-10 18:48:21 +08:00
    !!!!!!!
    搞定
    !!!!!!!

    地址匹配少写了一个/

    导致和django的urls.py匹配不同,导致了301跳转。


    大意害死人!!!

    感谢以上热心朋友的帮助!
    izoabr
        21
    izoabr  
       2014-08-10 20:03:25 +08:00
    @chaoyj 唉,301死你就得了,以后咱一起解决问题呀,先把配置和能贴出来的尽量多的配置信息贴出来,别跟挤牙膏似得,问的费劲,答地也不舒服。
    chaoyj
        22
    chaoyj  
    OP
       2014-08-10 20:11:41 +08:00
    @izoabr 刚开始一直以为是程序代码或者环境和变量的问题,怎么也不会想到是URLS.PY匹配的问题,真不好意思,多谢啦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2647 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:55 · PVG 10:55 · LAX 18:55 · JFK 21:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.