我在python中有很多函数,如果商店打开,关闭或者在30,29,28 ......分钟关闭,它会占用商店的营业时间和输出。现在我有一个iOS和Android应用程序,它将显示100个商店的输出。
我正在考虑通过让我的py脚本生成一个XML文件来执行此操作,该文件为每个商店说明它是打开,关闭还是关闭看起来像这样
<?xml version="1.0" ?>
<root>
<name store="one">
<field1 name="blah">open</field1>
</name>
<name store="two">
<field2 name="slah">closing in 17</field2>
</name>
</root>
但要做到这一点,我必须让我的py脚本每分钟运行一次cron作业,这可能是我将要运行的疼痛的数量密集,并且当脚本更新新文件时,旧的一个下降大约五秒钟(取决于脚本运行的时间长度),所以如果你在那段时间内试图获取应用程序的信息,你什么也得不到。
所以我的问题是有一种比输出XML文件更好的方法吗(也许JSON,我知道将数据传输到手机会更快但我不确定是否适用于手机制作文件?)或者还有更好的方法吗?
感谢您的帮助。
答案 0 :(得分:0)
我认为最好在向服务器发出请求时生成数据。您可以使用套接字功能扩展python脚本以侦听某个端口,然后生成数据或运行另一个服务,该服务将调用python脚本并将其结果发送回来。
我更喜欢JSON而不是XML,因为我认为它更清晰,更容易在Android和iOS应用程序中解析。
- 编辑 -
要创建python Web服务,您可以使用Web框架。我不得不承认我对python的经验很少,但我相信this tutorial会指出你正确的方向。
要从例如php文件中调用python脚本,您可以执行以下操作:
$storeTimes = system('python storescript.py myargs', $retval);
然后您可以将php文件放在您的web目录中并通过HTTP访问它。确保以JSON格式输出数据。
请注意,上面的选项到目前为止还不是一个完整的RESTfull Web服务。我不知道有关您的申请规模的详细信息,但如果您想了解更多信息,请阅读this explanation
答案 1 :(得分:0)
您可以做一些事情。我认为最好的想法是:
<强> A)强>
在javascript(你的python脚本)中编写脚本,然后在客户端上执行它们。这将使您只需拥有一个代码库,并避免一直调用您的Web服务(+您将只有一个静态文件!)
<强> B)强>
做@TMKVU的建议
<强> C)强>
每隔5或30分钟运行一次你的cron,只包括它实际运行的时间。然后你可以减去时间:
假设它是在10分钟前生成的,那么你只需从&#39;关闭中减去10分钟。言。
<强> ANYWAY:强>
如果你可以避免它扔掉人类可读的&#39;部分&#39;关闭...&#39;从您那里获得XML或JSON并在设备上执行此操作。