Я работаю над системой управления токенами. Токены выдаются в син c и асин c манере. Синхронным образом c токены выдаются на основе текущего времени и времени окончания предыдущего токена. Это в основном очередь. Принимая во внимание, что в асин c токенах пользователь может указать время, в которое он / она хочет назначить встречу. Таким образом, база данных будет проверена, и если этот период времени будет доступен, будет выдан токен. Мой токен syn c работает отлично. Проблема в том, что я не уверен, как синхронизировать базу данных с syn c и асин c токенами.
Например, если какой-то пользователь запрашивает асин c токен во время 15:00: 00 и какой-то другой пользователь просит время 14:00:00. Где текущее последнее время окончания токенов syn c - 12:00:00, как вставить эти данные в таблицу?
Примечание: в определенный момент времени может быть только один активный токен, либо syn c или asyn c. Каждой транзакции назначается максимум 5 минут. Время рассчитывается по сценарию python. bank_open
время равно 10:00:00
, а close_time
равно 18:00:00
Вот таблица MySQL:
+----+-------+--------------------------------------+-----------+-----------------+-----------------+-------------+
| id | type | token | date | start_time | end_time | no_of_trans |
+----+-------+--------------------------------------+-----------+-----------------+-----------------+-------------+
| 36 | sync | 4059cdea-6e9d-4943-8d4c-f5df99d12ff5 | 2020-4-22 | 15:53:15.347864 | 15:58:15.347864 | 1 |
| 37 | sync | 5b420dec-9fc2-415f-b2f2-3649a3c6fa26 | 2020-4-22 | 15:58:15.347864 | 16:18:15.347864 | 4 |
| 38 | sync | 72501a99-c081-48ee-a05d-959499eeb944 | 2020-4-22 | 16:18:15.347864 | 16:33:15.347864 | 3 |
| 39 | sync | 3d08050e-115f-4bb1-a98a-5991e87c4ead | 2020-4-22 | 16:33:15.347864 | 16:43:15.347864 | 2 |
| 40 | sync | c19e664b-0df0-4149-8b13-98d7450ea72f | 2020-4-22 | 16:43:15.347864 | 16:58:15.347864 | 3 |
| 41 | async | 56a6f5bf-0f1a-4694-8c69-c67f7ed39147 | 2020-4-22 | 16:59:00.123456 | 17:04:00.123456 | 1 |
| 42 | async | bac9b649-4462-46cb-a290-df63cb4b7158 | 2020-4-22 | 17:00:00.123456 | 17:05:00.123456 | 1 |
| 43 | async | e9b12cf7-c03f-4d2a-a4a4-f19b0d7d50f3 | 2020-4-22 | 17:47:00.123456 | 17:52:00.123456 | 1 |
| 44 | async | e9b12cf7-c03f-4d2a-a4a4-f19b0d7d50f3 | 2020-4-22 | 17:47:00.123456 | 17:52:00.123456 | 1 |
| 45 | async | a04f1347-ec1d-469d-911a-7783658e1e71 | 2020-4-22 | 17:50:00.123456 | 17:55:00.123456 | 1 |
+----+-------+--------------------------------------+-----------+-----------------+-----------------+-------------+
И это схема:
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| type | varchar(255) | YES | | NULL | |
| token | varchar(255) | YES | | NULL | |
| date | varchar(255) | YES | | NULL | |
| start_time | varchar(255) | YES | | NULL | |
| end_time | varchar(255) | YES | | NULL | |
| no_of_trans | int(11) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
В настоящее время я проверяю эти параметры в скрипте python:
for i in range(len(async_end_list)):
#print(async_start_list[i], '....', async_end_list[i])
if (user_time >= async_start_list[i] and user_time <= async_end_list[i]):
print("Wrong input")
break
if (user_time > async_start_list[i] and user_time > async_end_list[i]):
if (end_time < bank_close and user_time > bank_open and user_time < bank_close and user_time > latest_sync_end_time):
if (total_trans <= max_trans):
mycursor.execute("""INSERT INTO tokens (type, token, date, start_time, end_time, no_of_trans) VALUES (%s, %s, %s, %s, %s, %s)""",
('async', rand_token, today, user_time, end_time, no_of_trans))
mydb.commit()
print(mycursor.rowcount, "record inserted.")
break
else:
print("Maximum transactions for day has exceeded!!")
break
else:
print("Record cannot be inserted.")
break