2016-07-26 119 views
1

我有以下幾點:的Django的crontab不執行測試功能

  1. python manage.py crontab show # this command give following 
    
        Currently active jobs in crontab: 
        12151a7f59f3f0be816fa30b31e7cc4d -> ('*/1 * * * *', 'media_api_server.cron.cronSendEmail') 
    
  2. 我的應用程序在虛擬環境(環境)積極

  3. 在我media_api_server/cron.py我有以下功能:

    def cronSendEmail(): 
        print("Hello") 
        return true 
    
  4. 在settings.py模塊中:

    INSTALLED_APPS = (
        ...... 
        'django_crontab', 
    ) 
    
    CRONJOBS = [ 
        ('*/1 * * * *', 'media_api_server.cron.cronSendEmail') 
    ] 
    

要我全部到位定義,但是當我運行在虛擬環境中的python manage.py runserver命令,控制檯不打印任何東西。

System check identified no issues (0 silenced). 
    July 26, 2016 - 12:12:52 
    Django version 1.8.1, using settings 'mediaserver.settings' 
    Starting development server at http://127.0.0.1:8000/ 
    Quit the server with CONTROL-C. 

'的Django的crontab' 模塊是不工作我也跟着在這裏它的文檔https://pypi.python.org/pypi/django-crontab

+1

'django-crontab'是一個通過django命令管理用戶crontab的軟件包,它不會自行安排命令。你運行了'manage.py crontab add'並檢查你的用戶的crontab(通過'crontab -l')?你的系統是否運行cron?如果是這樣,那麼cron的日誌文件中是否有錯誤? – dhke

+0

crontab -l說:*/1 * * * * /var/www/html/projects/mediaserver/env/bin/python2.7 /var/www/html/projects/mediaserver/media/manage.py crontab run 12151a7f59f3f0be816fa30b31e7cc4d #django-cronjobs mediaserver 和'sudo service cron start'說: 開始:作業已在運行:cron –

+1

因此django-crontab完成了它的工作。檢查'/ var/log/cron'(如果你的系統仍然存在,否則你可能需要詢問journald)。你有沒有收到cron發來的郵件,通知你出了問題? – dhke

回答

3

你的代碼實際工作。你可能會認爲print("Hello")應該出現在標準輸出中?所以它不會這樣工作,因爲cron不會使用stdourstderr作爲輸出。要看到實際效果,你應該在CRONJOBS列表點路徑的一些日誌文件:只是把'>> /path/to/log/file.log'作爲最後一個參數,e.g:

CRONJOBS = [ 
    ('*/1 * * * *', 'media_api_server.cron.cronSendEmail', '>> /path/to/log/file.log') 
] 

此外,它可能會有所幫助重定向你的錯誤到標準輸出了。爲此,您需要將CRONTAB_COMMAND_SUFFIX = '2>&1'添加到您的settings.py

+0

感謝@valentjedi我的cron工作現在正在工作。 –