php script.php
usleep(2000000*$x);
let t = answer_comment[i];
/callbackquerytest
"""
Run scheduled jobs.
Not meant for running job at precise time (+- 1h)
"""
import time
from typing import List
import arrow
from sqlalchemy.sql.expression import or_, and_
def get_jobs_to_run() -> List[Job]:
# Get jobs that match all conditions:
# - Job.state == ready OR (Job.state == taken AND Job.taken_at < now - 30 mins AND Job.attempts < 5)
# - Job.run_at is Null OR Job.run_at < now + 10 mins
taken_at_earliest = arrow.now().shift(minutes=-config.JOB_TAKEN_RETRY_WAIT_MINS)
run_at_earliest = arrow.now().shift(minutes=+10)
query = Job.filter(
and_(
or_(
Job.state == JobState.ready.value,
and_(
Job.state == JobState.taken.value,
Job.taken_at < taken_at_earliest,
Job.attempts < config.JOB_MAX_ATTEMPTS,
),
),
or_(Job.run_at.is_(None), and_(Job.run_at <= run_at_earliest)),
)
)
return query.all()
if __name__ == "__main__":
while True:
# wrap in an app context to benefit from app setup like database cleanup, sentry integration, etc
with create_light_app().app_context():
for job in get_jobs_to_run():
LOG.d("Take job %s", job)
# mark the job as taken, whether it will be executed successfully or not
job.taken = True
job.taken_at = arrow.now()
job.state = JobState.taken.value
job.attempts += 1
Session.commit()
process_job(job)
job.state = JobState.done.value
Session.commit()
time.sleep(10)
def delete_logs():
"""delete everything that are considered logs"""
delete_refused_emails()
delete_old_monitoring()
for t in TransactionalEmail.filter(
TransactionalEmail.created_at < arrow.now().shift(days=-7)
):
TransactionalEmail.delete(t.id)
for b in Bounce.filter(Bounce.created_at < arrow.now().shift(days=-7)):
Bounce.delete(b.id)
Session.commit()
LOG.d("Delete EmailLog older than 2 weeks")
max_dt = arrow.now().shift(weeks=-2)
nb_deleted = EmailLog.filter(EmailLog.created_at < max_dt).delete()
Session.commit()
LOG.i("Delete %s email logs", nb_deleted)
<p id="bio">
Я есть в таких социальных сетях: <br>
1) http://example.org/profile/234; <br>
2) https://example.com/id6785; <br>
Мои работы ищите на www.test.ru.
</p>
var pattern = /((https?:\/\/|ftps?:\/\/|www\.)((?![.,?!;:()]*(\s|$))[^\s]){2,})/gim;
replacement = '<a href="$1">$1</a>';
document.getElementById("bio").innerHTML = document.getElementById("bio").innerHTML.replace(pattern, replacement);
SELECT has_access FROM `settings` WHERE chat_id = 235
import os
user_dir = os.path.expanduser("~")
\
или функцию join, или писать букву r перед открывающей кавычкой.>>> print("1\t2")
1 2
>>> print(r"1\t2")
1\t2
{
"response": {
"count": 4,
"items": [714092147, 443171438, 622481440, 623241681]
}
}
Надо было бы сделать так
На сервере!
Но нужно будет, говорю же, продумать задержку и всё равно возникнет проблема.
Всё, забудь про мой ответ. Так ничего нормально не выйдет.
Если только брокер очередей использовать.
Но его нужно ставить, а значит не любой хостинг подойдёт, только выделенный сервер, только линукс, скорее всего, да и скрипты уже не будут переносимыми, значит придётся использовать докер и так далее...
Python, всё же, будет лучше.