Google App Engine Python - 日期时间比较与字符串比较的成本

时间:2017-04-29 01:44:45

标签: python google-app-engine datetime

希望我能在这里清楚地表达自己,忍受我......

假设我有一个销售T恤的零售应用程序。每件T恤都可以处于预售或售中阶段。

每次用户访问特定的T恤页面时,我都可以将现在的日期时间与销售时的日期时间进行比较,并确定它是预售还是在售并输出相应的数据/内容。

相反,我可以有一个"阶段"我的T恤上的字符串属性,最初设置为"预售"。然后,我可以设置一个任务队列,以便在销售开始时执行,并切换"阶段"来自"预售"的T恤的财产到"在售"。当用户访问T恤页面时,我会检查字符串,是否是"预售"或" insale"并输出适当的数据/内容。

我的问题是,一种方法优于另一种方法吗?我假设第一种方法,即日期时间计算/比较,效率低于基于字符串比较的第二种方法?但是,第二种方法需要使用任务队列,这会增加开销/成本吗?

1 个答案:

答案 0 :(得分:-1)

我想到的第一件事就是配置。它是本地的,它只是读取一个文件,并没有比较任何东西。

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

main/
 -app/
   |_ __init__.py
   |_ app.py
 -templates/
 -settings/
   |_ __init__.py
   |_ settings.py
   |_ settings.json
_ main.py

我的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)

希望这会有所帮助:)