【问题标题】:can anyone explain this error when using ntplib in pythonanywhere?在 pythonanywhere 中使用 ntplib 时,谁能解释这个错误?
【发布时间】:2020-04-27 22:10:11
【问题描述】:

我在我的程序中使用 NTPlib,它在我的机器上运行良好,但是当我安排它从 pythonanyhere 运行时,我收到以下错误,File "/home/somasundharam/.local/lib/python2.7/site-packages/ntplib.py", line 306, in request s.sendto(query_packet.to_data(), sockaddr) error: [Errno 1] Operation not permitted

我应该怎么做才能避免这种情况?

下面是代码:

我忽略了添加从 Internet 复制的代码的邮件部分,我在 python 2.7 中运行此 pgm,因为代码中使用的 firebase 库有一个术语 async 用作 var 名称,这种情况发生要成为 python 3.7 中的关键字,在我的机器上我将其更改为 smthg else like asyncx 并且效果很好,但我不知道如何在 pythonanywhere 中更改相同的内容

如前所述,我使用pip2.7 命令安装了所有软件包,以便在 python 2.7 上运行它。

#!/usr/bin/python2.7
# coding: utf-8 
from firebase import firebase
import ntplib
from time import ctime
import pandas as pd
firebase = firebase.FirebaseApplication("https://@#$%^&.firebaseio.com/" , None)
c = ntplib.NTPClient()
response = c.request('asia.pool.ntp.org', version=3)
date_str = ctime(response.tx_time).split()
filename = date_str[0]+'_'+date_str[1]+'_'+date_str[2]+'_'+date_str[4]+".csv"
recipients = firebase.get("mailing list" , '')
mail_ids = list(recipients.values())
time_stamp = firebase.get("Time stamp" , '')
temp = firebase.get("TEMP SENSOR",'')
gas = firebase.get("GAS SENSOR", '')
humidity = firebase.get("HUMIDITY SENSOR",'')
sendata = [list(time_stamp.values()) ,list(temp.values()) , list(gas.values()) , list(humidity.values())]
sensor = pd.DataFrame(sendata)
sensor = sensor.transpose()
sensor.columns= ["Time Stamp","Temperature(deg C)" , "Gas Sensor(V)" , "Humidity(%)"]
sensor.to_csv(filename , index = False)

谢谢,

【问题讨论】:

  • 你能展示代码并告诉你如何运行它吗?
  • 也可能同样重要——完整的错误堆栈跟踪是什么?
  • @conrad 这是错误:(抱歉回复晚了)Traceback (most recent call last): File "/home/somasundharam/firebase_iot_integration.py", line 14, in <module> response = c.request('asia.pool.ntp.org', version=3) File "/home/somasundharam/.local/lib/python2.7/site-packages/ntplib.py", line 306, in request s.sendto(query_packet.to_data(), sockaddr) error: [Errno 1] Operation not permitted

标签: pythonanywhere


【解决方案1】:

这是因为免费的 PythonAnywhere 用户仅限于 HTTP/HTTPS 站点的白名单:https://www.pythonanywhere.com/whitelist/

【讨论】:

  • 我使用该库仅用于生成具有当前日期和日期的文件名,是否有任何其他方法可以做到这一点,以及该网站未列入白名单的任何特殊原因..?任何帮助表示赞赏,@conrad
  • 您正在使用的库似乎正在尝试将 NTP 直接连接到相关站点,因此由于未使用 HTTP 或 HTTPS,因此无法将其列入白名单。如果你只需要一个人类可读的时间戳,你能不能只使用 Python 的 strftime 方法,像这样:datetime.now().strftime("%Y-%m-%d-%H:%M")...?
猜你喜欢
  • 2010-10-19
  • 2013-09-24
  • 2021-01-08
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 2016-04-10
相关资源
最近更新 更多