Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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
Google应用程序引擎Python-日期时间比较与字符串比较的成本_Python_Google App Engine_Datetime - Fatal编程技术网

Google应用程序引擎Python-日期时间比较与字符串比较的成本

Google应用程序引擎Python-日期时间比较与字符串比较的成本,python,google-app-engine,datetime,Python,Google App Engine,Datetime,希望我能在这里清楚地表达自己,请耐心等待 假设我有一个销售t恤的零售应用程序。每件t恤都可以在售前或销售阶段 每次用户访问特定t恤页面时,我都可以将datetime now与它开始销售的日期时间进行比较,确定它是预售还是在售,并输出适当的数据/内容 相反,我可以在我的t恤上有一个相位字符串属性,最初设置为预售。然后,我可以设置一个任务队列以在销售开始时执行,并将t恤的phase属性从presale切换到in sale。当用户访问t恤页面时,我会检查字符串,无论是预售还是预售,并输出适当的数据/内

希望我能在这里清楚地表达自己,请耐心等待

假设我有一个销售t恤的零售应用程序。每件t恤都可以在售前或销售阶段

每次用户访问特定t恤页面时,我都可以将datetime now与它开始销售的日期时间进行比较,确定它是预售还是在售,并输出适当的数据/内容

相反,我可以在我的t恤上有一个相位字符串属性,最初设置为预售。然后,我可以设置一个任务队列以在销售开始时执行,并将t恤的phase属性从presale切换到in sale。当用户访问t恤页面时,我会检查字符串,无论是预售还是预售,并输出适当的数据/内容


我的问题是,一种方法比另一种更可取吗?我假设第一种方法是datetime计算/比较,比第二种基于字符串比较的方法效率低?然而,第二种方法需要使用任务队列,这会增加开销/成本?

我首先想到的是配置。它是本地的,它只是读取一个文件,它不比较任何东西

好的,我将使用我在Django和Flask项目中经常使用的结构。我的文件夹结构通常如下所示:

main/
 -app/
   |_ __init__.py
   |_ app.py
 -templates/
 -settings/
   |_ __init__.py
   |_ settings.py
   |_ settings.json
_ main.py
My settings.py文件是变量所在的位置。它的价值是巨大的,但它的实现很简单。 让我们看一个例子:

#settings.py
import json
path_of_json= "path here"
class Settings:
#Object interface of the settings

    class _Product:
    # Non-public class that implements a object interface for the products

        def __init__(self,name,sale_status):
        # Inicialization
        self.name = name
        self.sale_status = sale_status


    def __init__(self):
    #Handles what happens at initialization
        global path_of_json
        self.dict= self._load_json(path_of_json)  #this dictionary will hold the data we load from the JSON
        self.product1 = self._Product(self.dict['product1_name'],self.dict['product1_sale_status'])
        #Here we use the data that were loaded from the JSON
        self.product2 = self._Product(self.dict['product2_name'],self.dict['product2_sale_status'])
    def _load_json(self):
        #Here you implement the JSON loading
        pass
这是我们的配置文件

现在转到主应用程序,以及如何使其发挥作用

#main.py
from settings.settings import Settings

my_settings = Settings()
product1 = { "name":my_settings.product1.name,"sale_status":my_settings.product1.sale_status}
#Here the product was loaded from the settings
#A lot of awesome code here


def render_product_page(product):  #This function receives a dictionary
    render_template("sale_status-insert how your template engine show fields here", product["name"])
就是这样做的

现在,您只需要实现一个每24小时唤醒一次的小守护程序,检查settings.json文件中的数据,如果数据过时,请更新它。这是我留给你的XD


希望这有帮助:

非常感谢。我不太明白你的回答。销售将在将来某个日期开始。可能是几周甚至几个月。因此,每次用户访问该页面时,我都必须检查sale datetime与datetime.now的对比,以确定它是预售还是预售insale@JK140我马上写一份完整的答复,希望能帮助你。你有什么问题我应该试着回答吗?谢谢!我只是想了解解决这个问题的最佳方法。我不认为每次用户访问页面时都必须检查日期时间比较/计算是有效的。@JK140它确实不有效。是的,如果您能帮助找到更有效的方法,我们将不胜感激。您是否计算了日期比较与字符串比较所需的时间?一旦你这样做了,你就知道你进行一次比较的额外成本。那么在一个页面上会执行多少次比较呢?。那你就知道你的总成本了。现在检查生成整个页面需要多长时间。选择比较日期和字符串占页面总成本的百分比是多少。这应该告诉你,不断地重新处理预售/预售字符串是否值得让事情复杂化。同时,持续处理成本也会很高。特别是如果你的销售日期包括小时。