【问题标题】:PythonAnywhere Scheduled Tasks import errorPythonAnywhere 计划任务导入错误
【发布时间】:2016-07-06 01:29:13
【问题描述】:

我想每小时向我的用户发送推送通知。

from push_notifications.models import APNSDevice
print('test schedule task')
device = APNSDevice.objects.all()
if device is None:
    print('None Device')
print('number of models is '+str(len(device)))
device.send_message('test')

以上是我尝试每小时执行的内容。

但是当执行该脚本时,我得到的是一条错误消息:

"Traceback(最近一次调用最后一次):文件 "/home/User/Folder/Project/App/schedule.py", 第 1 行,在 from push_notifications.models import APNSDevice ImportError: No module named push_notifications.models

2016-03-19 05:49:05 -- 完成任务,耗时 0.00 秒,返回码 是 1。”

我该怎么解决这个问题?

print(sys.path)) 如下:

['/home/用户/文件夹/项目/应用', '/usr/local/lib/python2.7/dist-packages/snappy-2.3.2-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/cypari-1.2.2-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/pypng-0.0.18-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/FXrays-1.3.1-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/spherogram-1.4.1-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/plink-1.8-py2.7.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/local/lib/python2.7/dist-packages/Orange/orng', '/usr/local/lib/python2.7/dist-packages/PIL', '/usr/lib/python2.7/dist-packages', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']

【问题讨论】:

  • 你确定push_notifications已经安装了吗?
  • @SeanFrancisN.Ballais 当然,我确实成功地发挥了该功能,但执行了预定任务。
  • 文件models.py/home/User/Folder/Project/App/push_notifications/里面吗?如果这是 Django,我希望它位于 /home/User/Folder/Project/push_notifications/,在这种情况下,您需要将 /home/User/Folder/Project/ 添加到您的 sys.path

标签: python python-3.x python-import pythonanywhere


【解决方案1】:

看看你的 wsgi.py 文件,看看你是怎么做到的 在那里定义环境变量。你可能不得不做 在计划任务中将其作为脚本运行。

【讨论】:

    【解决方案2】:

    您需要在代码开头导入模块,以便程序调用它。

    【讨论】:

      【解决方案3】:

      节目有点晚了,如果你在 pythonanywhere 上每小时执行一次这个脚本,你没有与通过 manage.py shell 执行类似的东西时相同的上下文。我认为您应该将这段代码变成自定义管理命令。 https://docs.djangoproject.com/en/3.0/howto/custom-management-commands/

      【讨论】:

        猜你喜欢
        • 2010-12-22
        • 2011-09-26
        • 2010-11-20
        • 1970-01-01
        • 1970-01-01
        • 2018-04-14
        • 1970-01-01
        • 2019-09-27
        • 1970-01-01
        相关资源
        最近更新 更多