Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python和crontab计划作业?_Python_Django_Crontab - Fatal编程技术网

如何使用python和crontab计划作业?

如何使用python和crontab计划作业?,python,django,crontab,Python,Django,Crontab,我想用python、django和crontab发送一封自动邮件。所以我做了以下几件事 在home/myhome/django/myapp/registration/cron_tab.py文件夹中创建了一个cron_tab.py,如下所示: from django.core.mail import send_mail, EmailMessage,EmailMultiAlternatives subject, from_email, to = 'hello', 'testmailing@gmai

我想用python、django和crontab发送一封自动邮件。所以我做了以下几件事

在home/myhome/django/myapp/registration/cron_tab.py文件夹中创建了一个cron_tab.py,如下所示:

from django.core.mail import send_mail, EmailMessage,EmailMultiAlternatives

subject, from_email, to = 'hello', 'testmailing@gmail.com', 'robert@gmail.com'
text_content = 'This is an important message.'
html_content = '<p>This is an <strong>important</strong> message.</p>'
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
msg.attach_alternative(html_content, "text/html")
msg.send()
我像往常一样安排了任务

* 1 * * *  /home/myhome/django/myapp/registration/cron_tab.py
但我没有收到邮件。我做错了什么?请有人帮帮我。更改文件模式后,我得到以下错误并粘贴了回溯

 myhome@myhome:~/django/myapp/registration$ ./cron_tab.py
 from: can't read /var/mail/django.core.mail
 ./cron_tab.py: line 3: subject: command not found
 ./cron_tab.py: line 4: from_email: command not found
 ./cron_tab.py: line 5: to: command not found
 ./cron_tab.py: line 6: text_content: command not found
 ./cron_tab.py: line 7: html_content: command not found
 ./cron_tab.py: line 8: syntax error near unexpected token `('
 ./cron_tab.py: line 8: `msg = EmailMultiAlternatives(subject, text_content, from_email,
 [to])'
我认为您的cron_tab.py没有从setting.py读取django配置。然后从shell运行此脚本会发生什么

无论如何,你应该考虑使用这个任务。

< P>我认为你的CrnItApab.Py没有从Stuty.Py读取Django配置。然后从shell运行此脚本会发生什么

无论如何,你应该考虑使用这个任务。

检查Python脚本是否可以单独执行。 检查Python脚本是否可以通过在/home/myhome/django/myapp/registration/目录下运行./cron_tab.py来执行。如果不起作用,请在命令行的任意位置执行:chmod+x/home/myhome/django/myapp/registration/cron_tab.py,确保脚本以开头/指向python解释器的usr/bin/env python。 如果您没有使用Django的任何其他功能,如模型、查询集等,那么这种发送电子邮件的方法应该作为一个单独的脚本工作,而不知道Django的任何内容。另一方面,如果使用一些Django功能,您将有两种方法来运行此脚本:

a As a=>如果使用这种方法,我建议您为crontab创建一个单独的脚本,它只运行:

cd/home/myhome/django/

python manage.py在本例中:

b作为加载Django配置的Python脚本=>您可以使用直接运行脚本

检查Python脚本是否可以单独执行。 检查Python脚本是否可以通过在/home/myhome/django/myapp/registration/目录下运行./cron_tab.py来执行。如果不起作用,请在命令行的任意位置执行:chmod+x/home/myhome/django/myapp/registration/cron_tab.py,确保脚本以开头/指向python解释器的usr/bin/env python。 如果您没有使用Django的任何其他功能,如模型、查询集等,那么这种发送电子邮件的方法应该作为一个单独的脚本工作,而不知道Django的任何内容。另一方面,如果使用一些Django功能,您将有两种方法来运行此脚本:

a As a=>如果使用这种方法,我建议您为crontab创建一个单独的脚本,它只运行:

cd/home/myhome/django/

python manage.py在本例中:


b作为加载Django配置的Python脚本=>您可以直接使用运行脚本。

问题是您使用的Python脚本可能不是可执行文件,并且它不会在该行的第一行声明可执行文件

您有两个选择:

1在cron调用中添加python解释器在本例中,python解释器位于/usr/bin/python中:

1***/usr/bin/python/home/myhome/django/myapp/registration/cron_tab.py 2使python脚本可执行2.1+2.2

2.1.-使文件可执行

$chmod+x/home/myhome/django/myapp/registration/cron_tab.py

2.2.-编辑文件,并在解释器的第一行声明:

#!/usr/bin/python
from django.core.mail import send_mail, EmailMessage,EmailMultiAlternatives

问题是您使用的Python脚本可能不是可执行文件,并且它没有在第一行声明可执行文件

您有两个选择:

1在cron调用中添加python解释器在本例中,python解释器位于/usr/bin/python中:

1***/usr/bin/python/home/myhome/django/myapp/registration/cron_tab.py 2使python脚本可执行2.1+2.2

2.1.-使文件可执行

$chmod+x/home/myhome/django/myapp/registration/cron_tab.py

2.2.-编辑文件,并在解释器的第一行声明:

#!/usr/bin/python
from django.core.mail import send_mail, EmailMessage,EmailMultiAlternatives

@@avenet:我从以下位置获得此错误:运行/cron_tab.py from/home/myhome/django/myapp/registration/时无法读取/var/mail/django.core.mail。您能告诉我现在必须更改的内容吗。@问题能否将整个回溯粘贴到您的问题上?@@avenet:python manage.py中的_命令是什么意思?对不起,我不明白你的意思。你能给我解释一下吗@@avenet:我把回溯贴在我的帖子上了。请看一下。@questions请把这一行作为Pyhon脚本的第一行/usr/bin/env python@@avenet:我在运行/cron_tab.py from/home/myhome/django/myapp/registration/时无法读取/var/mail/django.core.mail时收到此错误。您能告诉我现在必须更改的内容吗。@问题能否将整个回溯粘贴到您的问题上?@@avenet:python manage.py中的_命令是什么意思?对不起,我不明白你的意思。能告诉你吗
请给我解释一下@@avenet:我把回溯贴在我的帖子上了。请看一下。@questions请把这一行作为Pyhon脚本的第一行/usr/bin/env python@@catavaran:我在回溯的同时更新了我的帖子。请有一个战利品在它。你正试图运行你的脚本作为一个外壳脚本。以python add的形式运行/usr/bin/env python作为脚本的第一行。@@catavaran:我添加了/usr/bin/env python作为第一行,但仍然得到相同的错误。@@acatavaran:我将第一行更改为/usr/bin/python。将cron_tab.py更改为可执行文件。但是错误仍然是一样的,如果python在虚拟环境中呢?如何添加脚本的第一行@@catavaran:我在回溯的同时更新了我的帖子。请有一个战利品在它。你正试图运行你的脚本作为一个外壳脚本。以python add的形式运行/usr/bin/env python作为脚本的第一行。@@catavaran:我添加了/usr/bin/env python作为第一行,但仍然得到相同的错误。@@acatavaran:我将第一行更改为/usr/bin/python。将cron_tab.py更改为可执行文件。但是错误仍然是一样的,如果python在虚拟环境中呢?如何添加脚本的第一行@@Juan Fco。罗科:我也试过你的选择。我也有同样的错误。@@Juan Fco。罗科:我也试过你的选择。我也犯了同样的错误。