python-crontab在Django请求中请求特权用户

时间:2018-11-23 20:27:55

标签: python django cron

我正在尝试使crontab自动化以接收请求并从Django创建作业,但出现以下错误:

    Traceback:

File "/var/www/venv/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/var/www/venv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = self.process_exception_by_middleware(e, request)

File "/var/www/venv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  124.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/var/www/venv/lib/python3.6/site-packages/django/views/decorators/csrf.py" in wrapped_view
  54.         return view_func(*args, **kwargs)

File "/var/www/myweb/apps/general/views.py" in create_cronjob_json
  779.     return create_cronjob(request)

File "/var/www/myweb/apps/utilities/daemons_planner.py" in create_cronjob
  12.     cron = CronTab(user="pedro")

File "/var/www/venv/lib/python3.6/site-packages/crontab.py" in __init__
  227.         self.read(tabfile)

File "/var/www/venv/lib/python3.6/site-packages/crontab.py" in read
  288.                 raise IOError("Read crontab %s: %s" % (self.user, err))

Exception Type: OSError at /create-cronjob-json/
Exception Value: Read crontab pedro: b'must be privileged to use -u\n'

我正在使用python-crontab

这是我的代码:

def create_cronjob(request):
    received_json_data = json.loads(request.body)
    cron = CronTab(user="pedro")
    comment = received_json_data['name']
    command = received_json_data['command'] 
    band = True
    for job in cron:
        if job.comment == comment:
            band = False
    if band:
        job = cron.new(command=command, comment=comment)
        job.setall(received_json_data['cron'])

    cron.write()
    response_data = {}
    response_data["success"] = True
    return JsonResponse(response_data)

可能是什么问题?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用:

CronTab(user=True)