Есть ли способ убедиться, что функция запускается только один раз, даже если многопользовательский доступ к моему веб-приложению в python? - PullRequest
0 голосов
/ 29 февраля 2020

Это функция, которую я вызову. Эта функция создаст каталог на сервере, но я хочу, чтобы каталоги создавались только один раз. Функция должна выполняться только один раз, когда ее посещает первый пользователь.

def makedirectories():
        # get list of all the stations and make directories of their name to store files
        ftp = FTP("14.139.107.169")
        ftp.login("ABC", "123456")  # login to FTP account
        print("Successfully logged in")
        ftp.cwd("UKGAWS")  # change working directory to \public_html\
        filenames = ftp.nlst()  # create variable to store contents of \public_html\
        # print(filenames)
        stationList = []
        homeDir = os.getcwd()
        todayDir = os.path.join(os.getcwd(), '%s' % filenames[10][8:14])
        if not (os.path.exists(todayDir)):
            os.makedirs(todayDir)
        os.chdir(todayDir)

1 Ответ

1 голос
/ 29 февраля 2020

Я могу придумать два способа:

  1. Переменная функции, связанной с функцией:
def makedirectories():
       if not makedirectories.run:
           # your method logic here
       makedirectories.run = True

makedirectories.run = False
Файловое решение: это решение, которое будет работать даже после перезагрузки сервера.
def makedirectories():
    if os.path.exists('temp'):
        return # file already exists.
    with open('temp', 'w'):
        pass
    # your logic here
...