Ваш метод tell_time
нуждается в self
в качестве параметра, поскольку это метод класса, а не функция. Добавление должно заставить его работать нормально. Попробуйте это:
from threading import Thread
from tkinter import *
import datetime
def build_ui():
root = Tk()
root.title("Auto Hedger")
root.geometry("640x480")
btn1 = Button(root, text="get data", command=testing1)
btn1.pack()
root.mainloop()
class test_object():
def tell_time(self):
print(datetime.datetime.now())
def testing1():
aaa = test_object()
t1000 = Thread(target=aaa.tell_time, args=[])
t1000.start()
if __name__ == '__main__':
t_root = Thread(target=build_ui)
t_root.start()
Если вы не можете или не хотите использовать cron, можно обновлять его только при доступе к странице. Вы можете кэшировать результат HTTP-запроса и обновлять его только при загрузке страницы, если кэш старше одного дня или любого выбранного вами интервала.
I've done this kind of thing in the past when I didn't have access to cron:
$lastRunLog = '/path/to/lastrun.log';
if (file_exists($lastRunLog)) {
$lastRun = file_get_contents($lastRunLog);
if (time() - $lastRun >= 86400) {
//its been more than a day so run our external file
$cron = file_get_contents('http://example.com/external/file.php');
//update lastrun.log with current time
file_put_contents($lastRunLog, time());
}
}
Вы также можете использовать Веб-Cron , если хотите попасть на сайт через определенный интервал времени.
Вы можете использовать Cronjob . Затем вы можете запустить php-скрипт из командной строки.
php /someplace/somefile.php
Cronjob будет выглядеть следующим образом, если вы обновляете каждый день.
0 0 * 0 0 php /someplace/somefile.php
Вы даже можете использовать таблицу базы данных - очень простую по структуре, идентификатору, дате, URL-адресу сценария и тому, что вам нужно, - и добавлять строку каждый раз при запуске сценария.
Затем , перед запуском сценария просто проверьте номера строк для каждого дня.
Since you explicitly state that you don't want to use cron, the only other way to do this (without something analogous to cron) is to set up your script as a daemon. However, unless you really need the flexibility that daemons provide, cron is much easier and simpler.
Here's one daemon walk-through.
Если вы работаете в среде * nix, вы можете использовать задания cron
Что не так с cron?
У вас есть пара вариантов cron - ваш php может быть вызван интерпретатором PHP из командной строки, или вы можете использовать wget или fetch или аналогичный для вызова ваш PHP на сервере.
Как правило, PHP, запускаемый из контекста веб-сервера, имеет ограничение по времени на то, как долго он может выполняться, поэтому в целом вы не можете настроить «фоновые» потоки PHP для выполнения каких-либо действий «позже».