TypeError: объект dict не является вызываемым (внутри функции Thread)
Я получаю ошибку в программе, которая использует threading для выполнения функций одновременно, этот процесс является заданием, которое выполняется один раз в час, Данные, которые поступают, получены из представления в sql.
Функция, вызываемая в цели arg, возвращает словарь и сообщает. "dict object is not callable". Внутри функции возвращается словарь. Я сомневаюсь, что должно быть возвращено в этой функции, если я ничего не верну, повлияет ли это на любой другой поток?
# inside the jobs in django I call this function
def ticket_booking():
query = " SELECT * FROM vw_ticket_list;"
ttd = []
try:
result = query_to_dicts(query)
tickets = json.loads(to_json(result))
if tickets:
# Calling the vaccination push message (php).
for ticket in tickets:
# Getting Generic details used by all categories
full_name = tickets['full_name']
gender = tickets['gender']
email =tickets[email]
if tickets['language_id'] == 1: # book english movie tickets
# Calling the function inside the Thread for a Syncronuz Call (Wait and Watch)
myThread = threading.Thread(target=book_english(email, full_name))
myThread.start()
myThread.join()
if tickets['language_id'] == 2: # book italian movie tickets
myThread = threading.Thread(target=book_italian( email, full_name, gender))
myThread.start() # Starting the Thread
myThread.join() #Will return here if sth is returned
Как вы можете видеть в комментариях кода, если функция book italian возвращает что-л., только тогда она может вернуться сюда, и у меня есть 5 потоков в общей сложности, чтобы вырезать одновременно, функция book italian выглядит так:
def book_italian(email,fullname,gender):
try
# posts data to another server #
b=requests.post(some postdata)
a =log.objects.create(log data from b in crct format)
return a--->{"Message":"Log created successfully"}
a является типом class dict и я пытался изменить его на многие типы, все равно выдает ту же ошибку, это задание не выполняется при запуске в crontab.
Когда вы используете threading.Thread
для выполнения чего-либо, вы должны разделить target
вызываемый объект (например, функцию) и соответствующие arguments
(параметры), а затем передать их соответственно:
myThread = threading.Thread(target=book_italian, args=(email, full_name, gender))
Ссылка на документ.